Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet BlueJ Objektorienterede programmeringsprincipper vigtigere end Java sprogdetaljer To værktøjer: Java Et sprog hvori man kan udtrykke de objektorienterede begreber BlueJ Et udviklingsmiljø kendetegnet ved - Enkel brugergrænseflade - Visualiserer programstrukturen - Objekter håndteres direkte Lær ved at læse og efterligne gode eksempler 1
Besøg websites: http://www.personed.co.uk/barnes Click på Companion Website bringer os til http://www.bluej.org/objects-first med Book Information Fx Errata Resources Fx Code Style Guide giver bogens Appendix J på skærmen Additional Information Fx BlueJ åbner for at få yderligere information om BlueJ, fx en tutorial (pdf-fil) 2
Nogle hovedidéer bag bogens opbygning: Projektstyret introduktion af stoffet Mål Opgave Analyse Modellering Nødvendige sprogkonstruktioner Projekterne er omhyggeligt implementerede Sprogdetaljer kan studeres ved at læse programteksterne Ikke struktureret ud fra hensynet til Java s sprogkonstruktioner 3
Dagens emner: Objekter og klasser Modeller Eksempler på modeller: Tegne og flytte figurerne cirkler, kvadrater og trekanter - projektet shapes Dan et bestemt billede bestående af figurer fra shapes - projektet picture Studerende på laboratoriehold - projektet labclasses En simpel billetautomat - projektet naiveticket-machine 4
Objekter og klasser En bil objekt eller klasse? Karakteristika for en (vilkårlig) bil, fx - Har en farve - Kan ommales (repaint) Olsens bil - er blå Hansens bil - er rød objekt eller klasse? Begge de to biler kan ommales 5
Begreber: En bil er en klasse, Car Olsens bil er et Car-objekt med farven blå Hansens bil er et Car-objekt med farven rød En bils farve er en attribut Ommaling er en operation En Java-klasse (Kapitel 2) definerer: Attributter som felter der har bestemte værdier Objekt-generatorer som konstruktorer Operationer som metoder, der kan have parametre, fx repaint(nyfarve) med parameteren nyfarve 6
Modeller En model er en beskrivelse af en lille afgrænset verden og dens egenskaber En model består af en struktur af objekter, fx en struktur bestående af en samling af bestemte biler Forskellige modeller hvori biler indgår: Motorregisteret i Danmark Et øjebliksbillede af placeringen af samtlige biler på DTU? Skal bilklassen tilpasses modellen Normalt ville en model med en bilklasse uafhængig af anvendelsen være at foretrække 7
Med brug af BlueJ vil vi nu eksperimentere (lege) med de givne Java-modeller shapes picture labclasses naive-ticket-machine for at Opnå fortrolighed med håndtering af objekter: Dan objekter Kig på dannede objekter Udfør metoder på objekter Introducere lidt Java-kode, source code Vise lidt dokumentation 8
Projektet shapes (1) Tegne og flytte cirkler, kvadrater og trekanter på et lærred (klassen Canvas) Figure 1.1 Højreklik på klassen Circle og vælg new Circle() Klik OK viser det dannede objekt Udvidet Figure 1.2 Udfør Exercise 1.1 (lærebogen side 5) 9
Projektet shapes (2) Højreklik på objektet circle2, vælg movehorizontal() og indtast 50 Begreberne signatur og parameter Flyt rundt med objektet circle2 circle2-version af Figure 1.3 Højreklik på objektet circle2 og vælg Inspect Figure 1.5 for circle2 Attributternes værdier definerer tilstanden for objektet circle2 10
Projektet shapes (3) Objekter fra samme klasse betegnes instanser af den pågældende klasse Figure 1.6 Karakteristika for objekterne circle1 og circle2 der stammer fra klassen Circle: Har de samme felter (defineret i klassen) Er i forskellige tilstande, har fx forskellig farve De samme metoder kan benyttes (defineret i klassen): changecolor() changesize() make...() move...()... 11
Projektet picture (1) Dan et bestemt billede bestående af en cirkel, to kvadrater og en trekant (brug af shapes) Kig lidt på Exercise 1.10: Åben picture projektet Dan et Picture-objekt Højreklik på objektet picture1 og vælg draw()-metoden Figure 1.7 12
Projektet picture (2) Tilbage i BlueJ s vindue prøves lidt forskelligt: Højreklik på klassen Picture og vælg Open Editor Skift i Editoren fra Implementation til Interface Java-standardklassen...Object er alle klassers stamfar Venstre-dobbeltklik på dokumentet giver et README.TXT-vindue 13
Projektet lab-classes (1) Studerende på laboratoriehold Kig lidt på Exercise 1.23: Åben lab-classes projektet Dan et LabClass-objekt Dan et Student-objekt tre er Sæt den studerende på laboratorieholdet Figure 1.8 Udfør Exercise 1.22 Sammenlign med Figure 1.9?? 14
Projektet lab-classes (2) Baggrunden for Figure 1.9: Åben lab-classes projektet Dan et LabClass-objekt Indsæt lærer, lokale og tidspunkt i LabClass-objektet med brug af de tre set...-metoder Dan tre Student-objekter Sæt de tre studerende på laboratorieholdet Udfør Exercise 1.22 Figure 1.9 15