Java Sommarkurs. Institutionen för datavetenskap. Här sitter vi. Kursen kontaktpersoner utbildningsprogram

Relevanta dokument
Klassdeklaration. Metoddeklaration. Parameteröverföring

Parameteröverföring. Exempel. Exempel. Metodkropp

Programmering A. Johan Eliasson

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Här sitter vi MIT-huset våning 4. Examination. Kursens uppläggning.

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Classes och Interfaces, Objects och References, Initialization

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

Objekt och klasser - Introduktion

F4. programmeringsteknik och Matlab

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

SMD 134 Objektorienterad programmering

Föreläsning 3: Booleans, if, switch

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Föreläsning 2, vecka 8: Repetition

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Objektorienterad Programmering (TDDC77)

Tentamen ID1004 Objektorienterad programmering October 29, 2013

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

TDIU01 - Programmering i C++, grundkurs

Programmeringsteknik med C och Matlab

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 5-6 Innehåll

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Föreläsning 3-4 Innehåll

Java, klasser, objekt (Skansholm: Kapitel 2)

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

TDDC77 Objektorienterad Programmering

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Objektorienterad programmering Föreläsning 4

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

TDDC77 Objektorienterad Programmering

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Objektorienterad programmering i Java

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Objektorienterad Programmering (TDDC77)

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

TDDC77 Objektorienterad Programmering

Tentamen ID1004 Objektorienterad programmering December 15, 2012

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Objektorienterad programmering i Java

Typkonvertering. Java versus C

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Programmeringsteknik I

Övning2. Variabler. Data typer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Programmering för språkteknologer II, HT2011. Rum

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad programmering i Java

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Tentamen Grundläggande programmering

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen OOP

Föreläsning REPETITION & EXTENTA

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

OOP Objekt-orienterad programmering

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Enkla datatyper minne

Transkript:

Institutionen för datavetenskap Java Sommarkurs Jürgen Börstler (jubo@cs.umu.se) Thomas Johansson (thomasj@cs.umu.se) Marie Nordström (marie@cs.umu.se) http://www.cs.umu.se/kurser/tdba54/su01 2 + 2 utbildningsprogram Datavetenskap Teknisk datavetenskap C:a 80 anställda (5 professorer) Forskning inom många olika ämnen Teknisk-vetenskapliga o parallella beräkningar Medicinsk informatik Kognitionsvetenskap Flera forskningscentra Kognitionsvetenskap Interaktion och design Programvaruteknik Teoretisk datalogi MDI... HPC2N VR-Lab Interactive Institute Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 2 Kursen kontaktpersoner Här sitter vi Studentexpeditionen Inga Bohman (inga, 5598) Anne-Lie Persson (anne-lie, 6130) Studievägledare Peter Stenberg (peter, 6985) Support Magdalena Kågström (support, 9950) Kursens lärare Jürgen Börstler (jubo, 6735) Marie Nordström (marie, 7708) Thomas Johansson (thomasj, 6259) Vä Ex MN TJ JB Su Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 3 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 4

Här finns labsalarna Kursens mål Kunskaper om problemlösning och programmering Färdighet i datoranvändning och programmering i Java Kännedom om begrepp, metoder och hjälpmedel för programkonstruktion Datorlab Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 5 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 6 Lektioner Datorövningar Obligatoriska uppgifter Individuell handledning Studie Kursens uppläggning Två olika sätt att förmedla stoffet Samma innehåll totalt Gemensamma föreläsningar Olika datorövningar Grupp 1: Objekt och design tidigt Grupp 2: Vår beprövade ansats Grupp 3: Deltar ej i övningarna Examination 3 obligatoriska uppgifter Teoriprov Praktikprov Regelbundet deltagandet viktig! Lunch på Björken Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 7 Kursmaterial Kursbok Lewis/Loftus: Java Software Solutions, 2nd edition, Addison- Wesley, 2000. OBS! Vi följer inte bokens upplägg till punkt och pricka OH bilderna från föreläsningen (finns på websidan) Diverse material som kommer att delas ut så småningom Hemsidan: http://www.cs.umu.se/kurser/tdba54/su01 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 8

Innehåll Programvaruutveckling Programvaruutveckling och programmering OOP snabbintroduktion Triangel exemplet Datatyper Uttryck Satser Arv Polymorfi Interfaces Metodik i programvaruutveckling Fält Undantag Filer och in-/utmatning Grafik GUI:s Design (CRC) Rekursion Applets Vitsen med att skriva ett program är att lösa ett problem Typiska steg för att lösa ett problem: Första problemet Dela in problemet i hanterliga delar Skissa och konsra en lösning Fundera på alternativa lösningar Förfina lösningen Realisera lösningen Testa lösningen och åtgärda alla fel Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 9 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 10 Programmering Programmering är att formulera en lösning till ett problem i ett programspråk. Känt problem Känd lösning Känt programspråk Problemlösning m h a datorer 0. Lös problemet 1. Skriv ett program som löser problemet 2. Mata in programmet i datorn 3. Exekvera programmet 4. Läs av resultatet Programmering är inte ett sätt att komma fram till en lösning. Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 11 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 12

Programmering i Java Kodning är bara en liten del i programvaruutvecklingen programmering <fil>.java Java programkod översättning compiler exekvering <fil>.class Java bytekod exekvering exekvering 67% 6% 1% 6% 5% 7% 8% Analys Planering Design Kodning Testning Integration Underhåll Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 13 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 14 Sent upptäckta fel blir dyra att åtgärda Problemlösning igen 400 350 300 250 Olika studier 1974-1980 IBM AS/400 (1994) 368 Många projekt misslyckas, eftersom utvecklarna inte till fullo förstår problemet som ska lösas Alla antaganden måste klargöras Möjliga feltolkningar måste undanröjas 200 150 100 50 1 1 2 2 3 3 4 4 0 Kravinsamling Analys Planering Design 10 Kodning 10 30 Integration 52 200 Underhåll När problem blir större, måste lösningen delas in i hanterliga delar Denna teknik är fundamental för programvaruutveckling I objektorienterad utveckling delas lösningen in i så kallade objekt och klasser Java är ett objektorienterad språk Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 15 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 16

Innehåll Objekt Programvaruutveckling och programmering OOP snabbintroduktion Triangel exemplet Datatyper Uttryck Satser Arv Polymorfi Interfaces Metodik i programvaruutveckling Fält Undantag Filer och in-/utmatning Grafik GUI:s Design (CRC) Rekursion Applets Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt, gripbart, synligt ting (t ex en specifik person) Abstrakt ting (t ex en tid eller en kurs) Varje objekt har ett tillstånd, ett beteende och en identitet. Tillståndet beskriver objektets egenskaper (t ex adress och ålder hos en person) Beteendet beskriver vad objektet kan göra (t ex flytta). OBS! Detta kan innebära att tillståndet ändras Identiteten skiljer ett objekt från alla andra objekt Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 17 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 18 Klass Objekt vs klass En klass är en byggplan för objekt av samma sort. Alla objekt av en klass (instanser) har samma sorts egenskaper och beteendet En klass beskriver en mängd liknande objekt namn ålder address flytta... Person namn egenskaper (attribut) beteende (metoder) bigyellowtriangle smallbluetriangle height width xposition yposition color Triangle changecolor changesize move... Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 19 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 20

Ett programspråk specificerar ord och symboler som får användas för att skriva program regler som bestämmer hur ord och symboler får sättas ihop Syntaxen beskriver hur giltiga programstrukturer (satser) måste se ut (se Appendix L i kursboken) Basic assignment Identifier = Programspråk Expression Semantiken beskriver vad precis olika satser betyder (dvs hur datorn ska tolka programmen) Värdet av uttrycket i expression tilldelas ( sparas i ) variablen identifier. Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 21 ; Identifierare och variabler Identifierare är namn på olika storheter som definieras av programmeraren Identifierare får innehålla bokstäver, siffror, understrykningstecknet (_), och valuta tecknen (t ex dollar tecknet) Identifierare får ej inledas med en siffra Identifierare måste vara entydiga Java är case sensitive, dvs Total är olika total Identifierare för värden eller objekt kallas variabler Identifier Java Letter Java Letter Java Digit Java Letter Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 22 a - z A - Z $ _ Java Digit 0-9 Reserverade ord får inte användas som identifierare Exempel på reserverade ord (det finns 59 sty): abstract boolean class const class extends float for Reserverade ord if implements import int import private public return static this void while Reserverade ord brukar visas i en annan färg i editorn Variabler och datatyper Variabler används för att spara data Variabler måste deklareras med datatyp och namn innan de får användas Basic Variable Declaration Primitive Type Identifier ; Class Type, En primitiv datatyp kan vara heltal (byte, short, int, long), flyttal (float, double), tecken (char) eller boolean En klasstyp är ett namn på en klass (t ex Triangle) Primitiva datatyper kallas också inbyggda datatyper Klasstyper kallas också användardefinierade datatyper Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 23 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 24

Tilldelning av värden En variabel innehåller antingen ett primitivt värde eller en referens till ett objekt Värdet av en variabel efter deklarationen är odefinierad Referenser som inte pekar till ett objekt har värdet null Variabler måste initialiseras En variabel tilldelas ett (nytt) värde genom = Basic assignment Identifier = Expression ; Exempel int value, discount; float net_price; value = 123; net_price = 123.0; discount = -15; net_price = 1.23e2; char acharacter; acharacter = A ; acharacter = \n ; boolean continue = ; Triangle bigyellowtriangle, smallbluetriangle; bigyellowtriangle =??? Hur skaffas objekt? Initialisering är tillåten i samband deklarationen! Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 25 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 26 Skapa och manipulera objekt Varje klass har (minst) en konstruktor för skapa (nya) objekt (s k instanser) av denna klass Variabeln tilldelas en referens till objektet Konstruktorn används genom new operatorn Referenser vs värden Tilldelning har lite olika effekt för primitiva datatyper och klasstyper! Primitiva datatyper: Variabel själva värdet Klasstyper: Variabel = referens till objektet Triangle bigyellowtriangle = new Triangle(); Objektet manipuleras med hjälp av objektets metoder Kom ihåg: Metoderna definieras i klassen Klassnamn Attribut (egenskaper) Metoder (beteendet) int i1 = 5, i2 = 10; i1: 5 i2: 10 i2 = i1; i1: 5 i2: 5 Triangle t1 = new Triangle(); Triangle t2 = new Triangle(); t1 t2 t2 = t1; t1 t2 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 27 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 28

Alias och garbage collection Innehåll Triangle t1 = new Triangle(); Triangle t2 = new Triangle(); t1 t2 t2 = t1; t1 t2 t2.changecolor ( red ); t1 t2 Ett objekt med flera namn; namnen kallas alias Objekt som inte längre kan nås; rensas bort automatiskt (garbage collection) Båda trianglar (t1 och t2) har blivit röda Var försiktig med aliasing Programvaruutveckling och programmering OOP snabbintroduktion Triangel exemplet Datatyper Uttryck Satser Arv Polymorfi Interfaces Metodik i programvaruutveckling Fält Undantag Filer och in-/utmatning Grafik GUI:s Design (CRC) Rekursion Applets Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 29 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 30 Triangle height width xposition yposition color changecolor changesize move... Instantiering och manipulation Triangle atriangle = new Triangle(); atriangle.move(); atriangle.changecolor( blue ); atriangle.move(); atriangle.changesize(50, 100); En vanlig metodanrop ser ut så här <objektnamn>.<metodnamn> (<parameterlista>); Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 31 public class Triangle private int height; private int width; private int xposition; private int yposition; private String color; Triangle i detalj 1 /** * Create a new triangle at default position with default color. */ public Triangle()... height = 30; width = 40; xposition = 50; yposition = 15; color = "green"; draw(); Att göra attribut oåtkomliga är bra programmeringsstil Konstruktorn Kommentar Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 32

Triangle i detalj 2 /** * Move the square a few pixels down. */ Kommentar public void move() erase(); // clear old position yposition = yposition + 100; // determine new position draw(); // draw on new position En metod /** * Change the size to the new size (in pixels). * PRE: Size must be >= 0. */ public void changesize (int newheight, int newwidth) erase(); height = newheight; width = newwidth; draw(); Parameter... Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 33 Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar variabel deklaration Class Body Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 34 Syntax: Basic Method Declaration Modifier Exempel: Metoddeklaration Type void Identifier Ej resultat Parameters Method Body public void changesize (int newheight, int newwidth) Parameter public float getarea ( ) Resultatets datatyp Parameter En metod kan ta noll eller flera parameter Varje parameter specificeras med datatyp och namn, de s k formella parametrar Antal, datatyperna och ordningen av de formella parametrar, metodnamnet och resultattyp kallas en metods signatur De s k aktuella parametrar i metodanropet måste vara kompatibelt med metodens signatur Exempel: atriangle.changesize (100, 50); atriangle.changesize (100); atriangle.changesize ( 1, 50); char c = atriangle.getarea (); // OK // fel antal // fel datatyp // fel datatyp Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 35 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 36

Parameteröverföring I Java överförs alla parameter by value Värdet på den aktuella parametern kopieras till den formella parametern (motsvarar tilldelningssats) När en referens överförs blir den formella parametern ett alias för aktuell parameter Return-satsen anger vilket värde som returneras (dvs överförs tillbaka) Överförs också by value Metodbody Innehåller lokala deklarationer & exekverbara satser Om resultattyp är inte void måste minst en returnsats finnas Exempel: public float getarea () float temp = 0.0; temp = height * width / 2; return temp; Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 37 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 38 Konstruktordeklaration En konstruktor är en speciell metod Samma namn som klassen Ingen explicit resultattyp Används för att initialisera objektets attribut Får ha parameter, t ex för att påverka initialiseringen Exempel: public Triangle () Grafisk notation - int height - int width - int xposition - int yposition - String color Triangle + Triangle ( ) + changecolor (String newcolor) + changesize (int newheight, int newwidth) + move ( ) + float getarea ( ) + boolean isequilateral ( ) // liksidigt?... Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 39 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 40

Abstraktion, information hiding och inkapsling En abstraktion är en förenklad men trogen modell av nånting som kan vara väldigt komplicerat En objekt/klass är abstrakt i den meningen att vi inte behöver känner till alla detaljer för att kunna använda det Vi behöver t ex inte känna till koden till move Med information hiding menas att viss information görs oåtkomlig för användaren T ex för att säkerställa att xposition och yposition bara förändras på ett kontrollerad sätt (genom move) Med inkapsling menas att abstraktion och information hiding används för att definierar meningsfulla klasser Abstraktionen görs offentlig (public) Känslig och oväsentlig data görs oåtkomlig (private) Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 41 Programmeringsfel En dator gör inte det programmeraren menade, den gör precis det ett programs semantik föreskriver. Man kan skiljer tre typer av fel Kompileringsfel När kompilatorn upptäcker att syntaxreglerna ej har följts eller att vissa typer ej är kompatibla (t ex int i = c ;) Run-time fel När programmet kraschar när det körs, t ex pga division med noll eller att typer ej är kompatibla Logiska fel När programmet verkar fungera bra, men levererar fel resultat Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 42 Programvaruutveckling och programmering OOP snabbintroduktion Triangel exemplet Datatyper Uttryck Satser Arv Polymorfi Interfaces Innehåll Metodik i programvaruutveckling Fält Undantag Filer och in-/utmatning Grafik GUI:s Design (CRC) Rekursion Applets Primitiva datatyper: Hel- och flyttal De olika heltal och flyttal typer har olika storlek Kan ta upp olika värden med olik noggrannhet Typ byte short int long float double Storlek 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Minimum -128-32,768-2,147,483,648 < -9 x 10 18 +/- 3.4 x 10 38 +/- 1.7 x 10 308 Maximum 127 32,767 2,147,483,647 > 9 x 10 18 med 7 signifikanta siffror med 15 signifikanta siffror Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 43 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 44

Primitiva datatyper: Tecken En variabel av datatypen char sparar precis ett s k Unicode tecken A character set is an ordered list of characters, and each character corresponds to a unique number Det finns 65,536 unika Unicode tecken (16 bit) med tecken och symboler från olika språk, t ex 'å' och 'ö' Alla tecken är ordnade och varje tecken motsvarar en siffra (detta underlättar att kolla om ett tecken ligger t ex mellan 'a' och 'z') Se Appendix C för detaljer Primitiva datatyper: Boolean En variabel av datatypen boolean innehåller antingen värdet eller värdet Används ofta för att definiera villkor logik Det finns tre logiska operatorer i Java inte (!), och (&&) och eller ( ) a!a a b a && b a b Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 45 back Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 46 Konstanter Innehåll Variabler som får inte ändras Markeras med reserverade ordet final Guideline: Använd bara stora bokstäver Exempel: final double PI = 3.14159; final char NEWLINE = \n ; Fördelar Vettiga namn istället för konstiga siffror eller tecken Lättare att förstå koden Enklare att uppdatera Programvaruutveckling och programmering OOP snabbintroduktion Triangel exemplet Datatyper Uttryck Satser Arv Polymorfi Interfaces Metodik i programvaruutveckling Fält Undantag Filer och in-/utmatning Grafik GUI:s Design (CRC) Rekursion Applets Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 47 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 48

Uttryck 1 Uttryck 2 Ett uttryck är en programkonstruktion som producerar (evalueras till) ett resultatvärde av en viss datatyp. Ett uttryck kan (bl a) vara: Ett primitivt värde (literal) -5, 1.23e2, c, En variabel smallbluerectangle, PI En metodanrop atriangle.changesize(50, 100); En tilldelning height = newheight Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 49 Ett uttryck är en syntaktiskt korrekt kombination av literaler, variabler, metodanrop, tilldelningar och operatorer. Typiska exempel på operatorer: Aritmetiska, t ex +, -, *, /, Logiska:!, &&, Relationala, t ex ==,!=, <, >=, Uttryck kan vara komplext Priotitetsordning för att bestämma hur det ska evalueras Se Appendix D för en fullständig lista Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 50 Prioritetsordning Exempel Operatorer med lägre prioritet evalueras först Vid samma prioritet avgör associativiteten hos operatorerna (vänster-höger / höger-vänster) Uttryck: Prioritetsordning: Evalueringsordning: Resultat: 5 + 12 / 5-10 % 3 Använd parenteser för att vara på säkra sidan (5 + (12 / 5)) - (10 % 3) 6 5 4 5 4 3 1 4 2 Uttryck 2 + 3 * 4 / 2 3 * 13 + 2 (3 * 13) + 2 3 * (13 + 2) 4 * (11-6) * (-8 + 10) (5 * (4-1)) / 2 Resultat 8 41 41 45 40 7 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 51 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 52

Uttryck 3 Innehåll Resultatvärdets datatyp hos ett uttryck beror på operatorn och datatyperna hos operanderna. Uttryck 17 / 5 17.0 / 5 17 / 5.0 9 / 12 9 / 12.0 6 % 2 7 % 2.5-7 % 2.5 Resultat 3 3.4 3.4 0 0.75 0 2.0-2.0 int dollar = 25; float money; money = dollar; // OK, money blir 25.0 dollar = money; // FEL, typerna är // icke kompatibla Programvaruutveckling och programmering OOP snabbintroduktion Triangel exemplet Datatyper Uttryck Satser Arv Polymorfi Interfaces Metodik i programvaruutveckling Fält Undantag Filer och in-/utmatning Grafik GUI:s Design (CRC) Rekursion Applets Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 53 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 54 Satser Satserna (statements) är grundinstruktionerna i ett programspråk. Block används för att grupperar satser sats; sats; OBS! Varje sats kan i sin tur vara ett block Sekvens Satserna exekveras en efter en Standard Urval Ordning på satserna Man väljer om satser ska exekveras eller ej If-sats, if-else-sats, switch-sats Repetition Satsen exekveras ett visst antal gånger while-loop, do-loop, for-loop Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 55 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 56

If-satsen Villkor if (villkor) sats; villkor sats Villkoret är ett uttryck Måste evaluera till / Ett s k boolskt uttryck Kan vara mer eller mindre komplicerat Exempel: i == j!(a > b) && (i == j+5-k) Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 57 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 58 If-else-satsen Switch-satsen if (villkor) sats1; else sats2; villkor switch (expression) case value1: sats1; break; case value2: sats2; break; Uttrycket måste vara heltal eller tecken Motsvarar nästade if-satser sats1 sats2 default: satsn; OPTIONAL Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 59 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 60

While-satsen Oändliga loopar while (villkor) sats; Gå runt i varv Villkoret evalueras på nytt före varje varv Satsen utförs/utförs inte en gång till Villkoret testas inte kontinuerligt Satsen utförs alltid helt villkor sats Det får hända att satsen exekveras inte alls Villkoret måste någon gång bli falskt, annars kommer man inte ut ur loopen Vanligt logiskt fel Se t ex Forever.java (s.138) int count = 1; while (count <= 25) System.out.println (count); count = count - 1; System.out.println ("Done"); // exekveras aldrig Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 61 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 62 Do-satsen For-satsen do sats while (villkor); Motsvarar omvänd while-sats Villkoret evalueras på nytt efter varje varv Satsen utförs minst en gång sats villkor for (initialisering; villkor; förändring) sats; motsvarar initialisering; while (villkor) sats; förändring; Fast loop Initialisering, villkor och förändring brukar refererar till samma variable Loop-variabeln bör inte ändras i satserna Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 63 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 64

For-satsen Exempel initialisering for (int antal=1; antal < 75; antal++) System.out.println (antal); villkor sats förändring for (int num=5; num <= total; num = num*2) sum = sum + num; System.out.println (sum); Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 65 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 66 Programflödet Programflödet är sekventiellt Sats efter sats i den beskrivna ordningen Återhoppet sker till anropsstället Referenser en gång till... Primitiva datatyper Storlek av variabler är fastlagd (se OH 44) Alla variabler av samma datatyp ta samma utrymme i minnet Värdet kan sparas direkt method1() sats; method2(); sats; method2() return ; Klasstyper Storlek av variabler varierar Variabler av samma datatyp kan ta olika utrymme i minnet Värdet kan inte sparas direkt Referenser ( pekare ) Olika effekt (semantik) för = och == Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 67 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 68

Minnet 1 Minnet 2 Minnet består av en rad celler Alla celler har samma storlek (en byte) Varje cell har en unik adress En variabel är i princip ett (vettigt) namn på en adress Stora värden sparas i konsekutiva celler Exempel (primitiva datatyper): byte b = 5; char c = A ; int i = 6; 9278 9279 b 5 9280 c A 9281 9282 i 6 9283 9284 9285 9286 Referenser är också adresser Triangle t1 = Exempel new (klasstyper): Triangle(); Triangle t2 = new Triangle(); Utförligt exempel: Se föreläsning 9278 t1 t2 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 69 Java--SU01 jubo, marie, thomasj@cs.umu.se, 2001 70