Personal Objektorienterad programmeringsmetodik 5DV081 5DV109 VT-10 Lärare Johan Eliasson (johane@cs.umu.se) Handledare Thomas Johansson Mikael Öhman Lucas Lindström 1 2 Här sitter vi MIT-huset våning 4 Kursens kontaktpersoner Stud.Exp. Support Johan Studentexpeditionen Yvonne Löwstedt (yvonne@cs.umu.se) Datorsupport (support@cs.umu.se) 3 4 Två kurser Två kurser som samläses 5DV081 Endast 5p programmering som förkunskap 5DV109 Ny kurs Har DoA kursen som förkunskap Håll reda på vilken kurs ni läser. De sista laborationerna kommer att skilja sig och också ev. annan examination. Föreläsningarna kommer att vara gemensamma (för det mesta). Vissa delar kommer säkert kännas lite enkla för er som redan läs doan Gemensamma kursmål Efter avslutad kurs ska studenten kunna: analysera en given problembeskrivning för att kunna ange lösningens omfattning och begränsningar utforma objektorienterade lösningar för småskaliga problem, med hjälp av CRC-kort och RPD konstruera och tolka UML-klassdiagram tolka, utöka och konstruera småskalig objektorienterad kod omfattande minst 5-6 klasser testa enheter i koden med hjälp av lämpligt verktyg under utvecklingsarbetet definiera grundläggande objektorienterade koncept och reflektera över användningar av dessa i sina lösningar 5 6
Mål som skiljer sig Kursens uppläggning 5DV081 skriftligt dokumentera ett mindre programmeringsprojekt enligt givna riktlinjer 5DV109 visa färdighet att arbeta i en grupp utifrån en projektmodell och tillämpa de teoretiska kunskaperna och objektorienteringsparadigmen praktiskt på ett programmeringsprojekt Visa grundläggande kunskap om en projektmodells delar och hur dessa samverkar använda ett versionshanteringssystem för källkod och annan dokumentation som skapas i en projektgrupp Föreläsningar!! - F Metodikövningar! - CRC Individuell handledning 7 8 Examination 5DV081 5DV081 4 obligatoriska uppgifter Teoriprov (3 timmar) Praktisktprov i lab (4 timmar) 5DV109 3 obligatoriska uppgifter Teoriprov (3 timmar) Praktisktprov i lab (4 timmar) Projekt = 3 hp = 4,5 hp = 2 hp = 4 hp = 1,5 hp 9 Kursmaterial Cay S. Horstmann, Big, Wiley, 3 ed ISBN: 978-0-470-10554-2. 4 ed ISBN: 978-0-470-50948-7 Boken finns även i en något mindre utförlig upplaga under namnet Concepts Object-Oriented Analysis and Design Through Scenario Role-Play OH bilderna från föreläsningarna http://www.cs.umu.se/kurser/5dv109/vt10 10 Eclipse Kursverktyg Finns att ladda hem för de flesta datorplatformar (PC, Mac, Linux m.fl.) Utformades av James Gossling (SUN) och släpptes 1995 Konstruerat för att vara plattformsoberoende. Dvs ett program skrivet i java skall gå att köra på olika datorplattformar utan att man behöver göra några förändringar. 11 12
programmering Programmering i exekvering Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. <fil>.java programkod översättning kompilator <fil>.class bytekod exekvering exekvering 13 Reellt, gripbart, synligt ting (t ex en specifik person) Abstrakt ting (t ex en tid eller en anställd) 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 14 Klass En klass är en byggplan för objekt av samma sort. Alla objekt av en klass (instanser) har samma sorts egenskaper och beteenden En klass beskriver en mängd liknande objekt namn ålder adress flytta... Person Namn på klassen egenskaper (attribut) beteende (metoder) 15 Objekt Objekt och klasser Modeller av saker i problemdomänen ( den röda bilen i parkeringshuset Nanna ) Klasser Representerar alla objekt av ett visst slags ( bil ) 16 Lite annat Många instanser kan skapas av en klass Ett objekt har attribut: värden som lagras i fields. Klassen definierar vilka fields ett objekt har, men varje objekt har sin egen uppsättning värden (objektets tillstånd/ state) Två cirkel-objekt är en instans av är en instans av 17 18
bigyellowtriangle Objekt vs klass height width xposition yposition color Triangle changecolor changesize move... Metoder och parametrar Objekt har operationer som kan anropas ( I kallas de metoder) Metoder kan ha parametrar så att information som är nödvändig för att att utföra operationen kan ges till objektet smallbluetriangle 19 20 Källkod Varje klass beskrivs med hjälp av källkod (kod). Där definieras detaljerna (attribut och metoder) Abstraktion och modularisering Abstraktion är förmågan att strunta i delarnas detaljer och istället fokusera på problemet på en högre nivå Ett/en objekt/klass är abstrakt i den meningen att vi inte behöver känner till alla detaljer för att kunna använda den Modularisering är arbetet att dela upp helheten i mindre, väldefinierade delar som kan byggas och utvärderas separat, och som interagerar på ett väldefinierat sätt. 21 22 Objekt, klasser, syntax Syntaxdiagram Start på en icketerminal Terminal symbol Möjlig väg att följa En annan icketerminal Slut på beskrivning av icketerminal = 23 24
Tilldelning av värden En variabel innehåller antingen ett primitivt värde eller en referens till ett objekt Referenser som inte refererar till ett objekt har värdet null. Attribut sätts automatiskt till null övriga variabler måste initieras manuellt. Variabler måste initialiseras En variabel tilldelas ett (nytt) värde genom = Basic assignment = Expression ; Lokala variabler Attribut/fields är en sorts variabler De lagrar värden hela objektets liv De kan nås i hela klassen. Metoder kan innehålla variabler med kortare livslängd De existerar bara medan metoden exekveras De kan bara nås inne i metoden (i det block där de är definierade) 25 26 are och variabler are är namn på olika storheter som definieras av programmeraren Lite andra regler gäller i än i C are får innehålla bokstäver, siffror, understrykningstecknet (_), och valuta tecknen (t ex dollar tecknet) are får ej inledas med en siffra är case sensitive, dvs Total är olika total are för värden eller objekt kallas variabler Letter Letter Digit Letter a - z A - Z $ _ Digit 27 0-9 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 ; 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, 28 Other java letter Primitiva datatyper: Hel- och flyttal De olika heltals och flyttals typerna har olika storlek. I är storlekarna def. enl. följande 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 Maximum 127 32,767 2,147,483,647 > 9 x 10 18 +/- 3.4 x 10 38 med 7 signifikanta siffror +/- 1.7 x 10 308 med 15 signifikanta siffror Primitiva datatyper: Tecken En variabel av datatypen char sparar precis ett s k Unicode tecken Värdemängden är en ordnad uppräkning av tecken 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 t.ex. http://www.unicode.org/ för detaljer 29 30
Primitiva datatyper: boolean Datatypen boolean har bara 2 värden true false Används på alla ställen där sanningsvärden behövs (tex ger jämförelseoperatorerna tillbaka resultat tillhörande denna datatyp) OBS detta skiljer sig alltså från C där heltal används som sanningsvärden Objekt Triangle bigyellowtriangle, smallbluetriangle; bigyellowtriangle =??? Hur får vi tillgång till objekt? 31 32 Konstruktorer public TicketMachine(int ticketcost) { price = ticketcost; balance = 0; total = 0; } Konstruktorer initialiserar ett objekt. De har samma namn som klassen. De lägger in startvärden på attributen. Startvärden till attributen kan fås utifrån via parametrar. Skapar nya objekt Ex new Triangle() new 33 34 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 (jämför med pekare i C) int i1 = 5, i2 = 10; 5 10 i1: i2: i2 = i1; 5 5 i1: i2: Triangle = new Triangle(); Triangle = new Triangle(); = ; 35 Alias och garbage collection Triangle = new Triangle(); Triangle = new Triangle(); = ;.changecolor ( red ); Ett objekt som refereras till mha flera referenser; referenserna kallas alias Objekt som inte längre kan nås; rensas bort automatiskt (garbage collection) Båda trianglar ( och ) har blivit röda! Var försiktig med aliasing 36
Syntax: Class Declaration Modifier Class Body { Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration } Class Associations Motsvarar variabel deklaration Class Body 37 Syntax: Basic Method Declaration Modifier Exempel: Metoddeklaration Type void Ej resultat Parameters Method Body public void changesize (int newheight, int newwidth) { Parameter } public float getarea ( ) { } Resultatets datatyp 38 Instantiering och manipulation Triangle atriangle = new Triangle(); Triangle height width xposition yposition color changecolor changesize move... atriangle.move(); atriangle.changecolor( blue ); atriangle.move(); atriangle.changesize(50, 100); En vanlig metodanrop ser ut så här! <objektnamn>.<metodnamn> (<parameterlista>); 39