ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl.10-12 Diskussion (kurshemsida): Om designuppgiften Om projektuppgiften.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Material för betyg 4-5 Föreläsning nr 5, fredag 27 mars. kl
Metoder i java Det finns två typer av metoder i java
Arv.
Polymorfism.
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
i olika programmeringsspråk
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
Programmering i C# 3. Klasser.
PROCESSPROGRAMMERING
Klasser och objekt Klasser, objekt och instansvariabler
Sid 41 Fordon int antalhjul; int vikt;
4. Arv och dynamisk bindning
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Polymorfism.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Arv.
Programmeringsteknik för Media1 & K1
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
OOP&M - teori1 OOP&M del II– Föreläsning 5 vecka 50 OBJEKT Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle Book String.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
Presentationens avskrift:

ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl Diskussion (kurshemsida): Om designuppgiften Om projektuppgiften Om java (exempel, ”Summeringar”): Att arbeta med klasser, objekt, metoder och tillstånd i BlueJ Statiska variabler och metoder och objekt Om objektdiagram och anropskedjor Om ärvning, Collection, referens(variabl)er, likhet mellan objekt

ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl Att arbeta med klasser, objekt, metoder och tillstånd i BlueJ (starthjälp) –Laddning av existerande projekt –Kompilering av klasser –Skapande av objekt –Anropa metoder –Inspektera tillstånd

ObjektOrienterad analys och design. SVP Vt2009 Klasser: manifesterar sig dels statiskt som kodrader, javatext, i programlistor, dels dynamiskt som kompilerad bytekod och datastrukturer i det exekverande systemet, ”datorn”. Objekt: manifesterar sig dynamiskt som datastrukturer i det exekverande systemet, ”datorn”. Objekten skapas under exekveringen, utförandet av programmet. Metoder: finns framför allt som instans- eller objektmetoder, som man ber ett specifikt objekt om att utföra, men också i form av klassmetoder, dvs tjänster som man ber en klass att utföra.

ObjektOrienterad analys och design. SVP Vt2009 Attribut: egenskaper som objekt (och klasser) kan ha. Vilka attribut som finns definieras i klassen. Vad de attribut, som hör till objekt, har för initialvärden definieras när objektet skapas av klassens konstruktor, och värden uppdateras sedan av respektive objekt. Tillstånd: Ett objekts tillstånd i ett visst ögonblick utgörs av de värden objektets attribut har just då.

ObjektOrienterad analys och design. SVP Vt2009 Demo av shapes Chapter01/projects/shapes Prova själv Lek med de olika klasserna, objekten och metoderna!

ObjektOrienterad analys och design. SVP Vt2009 Välj: projects\chapter01\shapes Högerklicka på någon av klasserna, t.ex. Circle och välj: new Circle( ) Den får default-namnet circle1 och det dyker upp en symbol i ”objektdelen”.

ObjektOrienterad analys och design. SVP Vt2009 Skapa ett objekt till, förslagsvis ur klassen Square Nu har du två objekt och kan anropa deras metoder. Högerklicka på objekten och be dem bli synliga, välj att beställa tjänsten makeVisible( ) Vips dyker det automatiskt upp ett canvasobjekt, och i det manifesterar sig de två objekten vi skapat.

ObjektOrienterad analys och design. SVP Vt2009 Skapa fler objekt och lek med dem! Anropa de olika metoderna och se vad som händer. En del syns direkt, men du kan också högerklicka på objekten och välja Inspect. Då visas status, de aktuella egenskaperna. Tänk dig Inspect som ett "service- instrument" som ingår just i BlueJ. Det är inget man normalt kan göra med java-objekt. Värdena i Inspect-rutan uppdateras dynamiskt.

ObjektOrienterad analys och design. SVP Vt2009 Högerklickar du på en klass (t ex Circle) och väljer Inspect, ser du att denna klass inte har mycket till eget tillstånd. Koden är sådan att den här klassen helt enkelt inte har några attribut. Väljer du Canvas får du lite i alla fall:

ObjektOrienterad analys och design. SVP Vt2009 Attributen definieras i klassen med angiven datatyp och de får sedan värden, som hanteras av och hör till de enskilda objekten (utom de attribut, som är klassvariabler).

ObjektOrienterad analys och design. SVP Vt2009 Demonstration av klassvariabel och klassmetod, nyckelordet static. I projektet shapesStatic vill vi hålla reda på hur många objekt som skapats av de olika formerna, och vi gör det med en heltalsvaiabel numberOfInstances enligt: public class Circle { private int diameter; //--- private static int numberOfInstances = 0; /** Create a new circle at default position */ with default color. public Circle() { diameter = 30; //--- numberOfInstances = numberOfInstances + 1; } // ---- public static int getNumberOfInstances( ) { return numberOfInstances; } } Nyckelordet static gör att heltalsvariabeln numberOfInstances bara finns i ett exemplar som hör till klassen och inte till varje enskilt objekt. Metoden getNumberOfInstances( ) är också static och anropas via klassnamnet: Circle.getNumberOfInstances( ) I BlueJ anropas klassmetoder via högerklick på klassen Circle.

ObjektOrienterad analys och design. SVP Vt2009 Vi försöker nu mjölka ut ytterligare en sak ur projektet shapes: Ärvning I klasserna Circle, Square och Triangle fanns väldigt mycket som var gemensamt, nämligen variablerna: int xPosition; int yPosition; String color; boolean isVisible; och metoderna: public void makeVisible ( ) ; public void makeInvisible ( ) ; public void moveRight ( ) ; public void moveLeft ( ) ; public void moveUp ( ) ; public void moveDown ( ) ; public void moveHorizontal(int distance) public void moveVertical(int distance) public void slowMoveHorizontal(int distance) public void slowMoveVertical(int distance) public void changeColor(String newColor) private void erase ( ) ; Vi kan lägga detta i en gemansam klass Shapes, och i de ursprungliga klasserna Circle, Square och Triangle bara ha kvar det som är specifikt just för den aktuella klassen.

ObjektOrienterad analys och design. SVP Vt2009 Det som skiljer när det gäller variabler (fields) är att cirkelobjekt har diameter, kvadrater size (=sida) och trianglar width och height, och när det gäller metoder att rita dem med: public void draw( ); // olika biblioteksfunktioner används och anger storlek: public void changeSize(int newDiameter); // circle, one parameter public void changeSize(int newSize); // square, one parameter public void changeSize(int newHeight, int newWidth); // triangle, two parameters Genom att lägga det gemensamma i en superklass Shape kan man minska den totala kodmängden och framför allt göra den lättare att underhålla. Lite extra trixande krävs för att hantera det olika antalet parametrar till changeSize. Se projektet shapesPlus. Notera nyckelordet abstract på tre ställen i superklassen Shape, och extends Shape i de tre subklasserna Circle, Square och Triangle. Subklasserna känner till sin superklass, men superklassen vet inte vilka klasser, som hjälper till genom att bidra med de två abstrakta metoderna som saknas. shapesPlus

ObjektOrienterad analys och design. SVP Vt2009 Mer om ärvning: I shapesPlus -projektet var superklassen Shape abstrakt. Det betyder att den inte på egen hand kan skapa objekt. Man kan inte anropa konstruktorn i en abstrakt klass, utan der är då subklassernas konstruktorer som får anropas, när man vill ha ett objekt. Så är det inte alltid när man har ärvning. Man kan ha superklasser som inte är abstrakta. Peojektet shapesPlus är ett exempel där man har en begreppshierarki. Det generella begreppet är Shape, och man har tre olika specialseringar, eller om man så vill, utvidgningar av det. Att class Circle extends Shape betyder att objekt från Circle kan utföra alla de metoder som finns i superklassen Shape, och dessutom de metoder som finns i klassen själv. Skulle en metod vara implementerad med samma namn och samma formella parameterlista på båda i både super- och subklass gäller den dynamiska typen vilket betyder att det är den klass som anropades, när objektet skapades, som tillför den metod som tillämpas. Mer om detta i kursbokens kapitel 9.

ObjektOrienterad analys och design. SVP Vt2009 Ännu mer om ärvning: Ärvning används inte bara för hantering av hierakiska begreppsstruk- turer. Det allra vanligaste är nog när man vill utnyttja funtionalitet som finns hos någon av klasserna i javabiblioteken. Om man t.ex. vill göra ett adressregister med ett windowsliknande användargänssnitt, kan man utnyttja klassen JFrame i biblioteket javax.swing: import javax.swing.*; public class AdressRegister extends JFrame { // etc. Detta betyder att när man skapar objekt från klassen AdressRegister kan dessa objekt dels utföra all metoder som objekt från klassen JFrame kan utföra, dels alla de metoder man lagt in just i klassen AdressRegister. Raden import javax.swing.*; gör att alla klasser i biblioteket javax.swing blir ”synliga”, dvs kan refereras och användas, i klassen AdressRegister. Läs om ärvning i kapitel 8-9 i kursboken.