ObjektOrienterad analys och design. SVP Vt2009. Introduktionsföreläsning måndag 6 april kl Presentation av medverkande lärare Kursinformation (se också kurshemsida)kurshemsida –Mål och inriktning. –Kursuppläggning och examination. Kort historik om Objektorientering. Oslo; Kristen Nygaard, Ole-Juhan Dahl med Simula 67. XEROX PARC och Smalltalk80. C++ och java AXE och PLEX. SDL, Ivar Jacobsson, Objectory, RUP och UML. Oslo; Kristen Nygaard, Ole-Juhan Dahl med Simula 67 XEROX PARCSmalltalk80C++java AXEPLEX SDLIvar JacobssonObjectoryRUPUML Intuitivt om klasser, objekt, metoder, tillstånd etc. Introduktion till java och systemet BlueJ. Exemplet "Hund"
ObjektOrienterad analys och design. SVP Vt2009. Kursuppläggning: Ett par år har jag använt kursboken: David J. Barnes & Michael Kölling: Objects First with Java - A Practical Introduction using BlueJ. Fourth edition, Pearson Education, ISBN Den kostade : 439:- + frakt på AdLibris. Den har i huvudsak fungerat bra, och jag använder den därför också nu vt Kursens organisation, liksom synen på förståelse, lärande, programmeringsförmåga och examination, har anpassats till de grundläggande idéerna bakom denna kursbok.
ObjektOrienterad analys och design. SVP Vt2009. Kursuppläggning: Grundläggande idé: Den förståelse och förmåga som krävs för att kunna skriva fungerande datorprogram, måste var och en bygga upp själv genom egen träning, genom att själv våga prova och göra fel och förstå varför det var fel. Förståelsen och förmågan kommer efter väldigt många och väldigt små sådana egna steg. Den kommer inte genom att man läser program andra skrivit eller genom att man sitter vid sidan om och tittar på, när någon annan skriver!
ObjektOrienterad analys och design. SVP Vt2009. Kursuppläggning: Grundläggande idé (forts.): Kursen (och kursboken) syftar till att utveckla en grundläggande förståelse och förmåga när det gäller objektorienterad programmering allmänt och inte användning av ett specifikt programme- ringsspråk. Det konkreta språk som används i exempel och resonemang, är java, version jdk1.6, men begreppen och kunskapen gäller också för andra objektorienterade språk.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp: Objektorientering som begrepp inom datorprogrammering uppstod i samband med att man utvecklade datorprogram, som skulle simulera konkreta förlopp i verkligheten. Om man t.ex. ville simulera ett trafikflöde med bilar lät man varje konkret bil vara en enhet, ett objekt, som fanns också i programmet. Strukturen i programmet fick bestämmas av den verklighet, som programmet skulle simulera.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp: Anledningen till att man ville simulera var ofta att verkligheten var väldigt komplex. Där fanns väldigt många exemplar av olika saker, t.ex. bilar, korsningar, trafiksignaler, vägar och gator, osv. Man hade ett behov av att beskriva de program-enheter som skulle representera alla dessa "saker" på ett effektivt och överskådligt sätt. För denna typ av tillämpningar utvecklades vid Norsk Regnesentral i Oslo under 1960-talet språket Simula, byggt på klasser (= klassdeklara-tioner), objekt (= klassinstanser), ärvning (=subklasser till klasser) och metoder. Simula fick direkt en ganska stor spridning i de nordiska länderna.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp: Exempel bilregister: En klass kan ses som en kategori eller ett begrepp. Det är naturligt att införa en klass Bil. Underkategorier eller subklasser kan vara Lastbil, Buss och Personbil. Varje konkret verklig fysisk lastbil blir ett Lastbilsobjekt, varje buss ett Bussobjekt, och varje personbil ett Personbilsobjekt. Ett objekt är en instantiering av en klass dvs ett konkret exemplar av det som klassen beskriver eller definierar.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp: Exempel bilregister (forts): Klassen Bil anger vilka egenskaper en bil kan ha: bilmodell, färg, registreringsnummer, ägare, maxlast, motorstyrka osv. För ett konkret bilobjekt som t ex MinGamlaVolvo måste jag definiera vilka “värden” just detta exemplar har när det gäller de olika egenskaperna: Modell 740SE, vit, OFN 562, Bengt Lennartsson etc, 760 kg, 120 kW, osv.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp: Exempel bilregister (forts): Metoder är det som objekten gör (på beställning). Det kan vara att skapa sig själv (lägga in en ny bil i registret), att ändra egenskaper, t.ex. byta ut (delar av) informationen om ägaren, att leverera något till omvärlden, t.ex. skriva ut registerutdrag. Det kan också vara att avskaffa sig själv, dvs avföra det aktuella bilobjektet från registret.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp Intuitiva begrepp: Du bör nu ha en föreställning om vad begreppen klass, objekt och metod står för. Den metod som skapar nya objekt har en särställning och kallas som i språket java ofta konstruktor. När det gäller att ta bort objekt har java, liksom Simula, automatisk skräpsamling, garbage collection, som plockar bort objekt som inte längre används eller behövs.
ObjektOrienterad analys och design. SVP Vt2009. Objektorienteringens allmänna grundidéer och begrepp: Kort om steget från Simula till java: Idéerna och begreppen från Simula fördes vidare till systemet Smalltalk vid Xerox PARC under 1970-talet, där en betydande del av den web- och Internetteknik vi ser idag föddes. Smalltalk var, liksom Simula, banbrytande i många avseenden och fick stor uppmärksamhet, men krävde då, liksom många andra innovationer vid PARC speciella processorer, vilket hindrade spridning till bred praktisk användning. Man försökte då införa principerna i existerande traditionella språk och system, C blev C ++ eller Objective C, etc. Det gjordes också flera försök att utveckla helt nya helt objektorienterade språk och system. Ett sådant är java, som används mycket i undervisning och vid implementation av grafiska användargränssnitt, GUIs.
ObjektOrienterad analys och design. SVP Vt2009. Ett inledande exempel Jag definierar begreppet, kategorin, eller i programmeringtermer, klassen Hund, och jag skapar ett par hundindivider, hundexemplar, hundinstanser eller hundar helt enkelt; hundobjekt i programmeringstermer. Jag gör ett exempel där kategorin hund bara beaktar två egenskaper: namn och färg. Jag börjar med att i BlueJ definiera New Project : hundar och New Class: Hund
ObjektOrienterad analys och design. SVP Vt2009. Ett inledande exempel: Om jag högerklickar på Hund och väljer Open Editor kan jag skriva in den javakod som skall definiera klassen hund. Först anger jag på första raden klassens namn: public class Hund { private String mittNamn; private String minFärg; och definierar sedan namnen mittNamn och minFärg på de två egenskaperna i deklarationerna där dessa namn införs/definieras. String är namnet på en klass som redan finns i javabiblioteken så mittNamn och minFärg blir namn på objekt från klassen String.
ObjektOrienterad analys och design. SVP Vt2009. Ett inledande exempel: Efter dessa deklarationer följer konstruktorn, dvs det som utförs när någon beställer ett nytt hundobjekt: public Hund(String beställdaNamnet, String beställdaFärgen) { mittNamn = beställdaNamnet; minFärg = beställdaFärgen; } Se detta som beställningscentralen i kenneln, dvs den enhet som tar emot och effektuerar beställningar av hundobjekt. Beställaren har i blanketten fyllt i beställdaNamnet och beställdaFärgen, och ordermottagningen ser till att den hund som levereras får egenskaper mittNamn och minFärg som överensstämmer med detta. Efter konstruktorn följer de två metoderna som gör att levererade hundar kan utför/besvara dessa två. Se det som att kenneln "byggt in" eller dresserat hundarna till dessa förmågor.
ObjektOrienterad analys och design. SVP Vt2009. Ett inledande exempel: De två metoderna: public String angeDinFärg() { return minFärg; } public boolean heterDu(String angettNamn) { return mittNamn.equals(angettNamn); } där equals är en metod som redan finns i klassen String. Den returnerar true och de två strängarna mittNamn och minFärg innehåller samma teckenföljd, annars false. Nu kan vi se hur man skapar hundobjekt i BlueJ efter det att klassen Hund har kompilerats.
ObjektOrienterad analys och design. SVP Vt2009. Ett inledande exempel: Högerklicka på klassen Hund och välj första alternativet, som är en "beställning" new Hund(String beställdaNamnet, String beställdaFärgen) till konstruktorn. Du får nu en pop-up-ruta, där du ombeds fylla i de två önskade egenskaperna. Om du vill ha en hund som heter Davina och är svart, fyller du i "Davina"och "svart" inklusive citationstecknen. När du klickat OK får du upp en ny röd figur i nedre delan av BlueJ-fönstret. Beställer man en hund till, Davinas gula halvsyster Jenka, Får man en BlueJ enligt nästa sida.
ObjektOrienterad analys och design. SVP Vt2009. Nu kan man högerklicka på de två hundobjekten och be dem utföra/ besvara de två saker de "fått lära sig" eller "fått inbyggda i sig" innan de levererades av konstruktorn. Högerklickar man på ett hundobjekt (i BlueJ, inte i bilden här till höger:-) kommer en pop-up-ruta där man kan välja på angeDinFärg() och t.ex: heterDu("Bamse") och få svar på detta. Den kompletta koden för klassen hund finns på nästa sida.
ObjektOrienterad analys och design. SVP Vt2009. public class Hund { private String mittNamn; private String minFärg; /** Kommentar för mänsklig läsning: * Konstruktor. "Beställning", dvs anrop, till denna levererar ett nytt hundobjekt */ public Hund (String beställdaNamnet, String beställdaFärgen) { mittNamn = beställdaNamnet; minFärg = beställdaFärgen; } /** Kommentar för mänsklig läsning: * Metoder, dvs sådant objekt från denna klassen kan utföra/besvara. */ public String angeDinFärg() { return minFärg; } public boolean heterDu(String angettNamn) { return mittNamn.equals(angettNamn); } }
ObjektOrienterad analys och design. SVP Vt2009. Kursbok (man kan inte klara kursen utan att ha tillgång till den): David J. Barnes & Michael Kölling Objects First with Java - A Practical Introduction using BlueJ. Forth edition, Pearson Education ISBN X. AdLibris, 439:-+frakt Du måste också ha tillgång till en dator, som har java version 1.6.nånting, och som har systemet BlueJ version eller senare, för att kunna göra uppgifterna i kursen. CD med BlueJ finns med i boken.
ObjektOrienterad analys och design. SVP Vt2009. Av javas 53 reserverade ord har vi i detta lilla exempel i koden använt fem: boolean, class, private, public, och return, och i resonemanget ytterligare tre: true, false och new. Vi har i koden själva definierat/deklarerat åtta "ord": Hund, mittNamn, minFärg, beställdaNamnet, beställdaFärgen, angeDinFärg, heterdu och angettNamn. Vi har också använt namn på två saker som är definierade i redan existerande klasser i javas programbibliotek: String och equals.
ObjektOrienterad analys och design. SVP Vt2009. Kursbok (man kan inte klara kursen utan den): David J. Barnes & Michael Kölling Objects First with Java - A Practical Introduction using BlueJ. Fourth edition, Pearson Education ISBN X. AdLibris, 439:-+frakt Du måste också ha tillgång till en dator, som har java version 1.6.nånting, och som har systemet BlueJ version eller senare, för att kunna göra uppgifterna i kursen. CD med BlueJ finns med i boken.