DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Objektorienteret programmering
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Delphi og C++ Builder C++ Referencer og pointere.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Forelæsning 3.1 Collections Javas for-each løkke
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Fundamentale datastrukturer
Eksempel på realisering af domænemodel
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Procestræ under afvikling af cp init login shell cp cp src dest.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Forelæsning 2.2 Tilstand og opførsel (repetition)
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
DAIMIIntroducerende objektorienteret programmering3C.1 Design af klasser Specifikation og implementation.
DAIMIIntroducerende objektorienteret programmering4C.1 Systemdesign Design med flere klasser, En kaffeautomat.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klassevariable- og metoder Tilstand og opførsel på klasseniveau.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering1B.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
DAIMIIntroducerende Objektorienteret Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Klassevariable- og metoder Funktionalitet på klasseniveau.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.
Forelæsning Uge 2 – Torsdag
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato

DAIMIIntroducerende objektorienteret programmeringkd.2 Modelelementer  Et program er en model, hvor de enkelte elementer er beskrevet vha. objekter. Et objekt er karakteriseret ved tilstand og opførsel. Objekter med ens opførsel grupperes i klasser.  Hvert objekt er et ‘modelelement’ og beskevet ved en klasse. Vi vil ofte sige at en klasse ‘modellerer’ en eller anden ting: En tekst, en skildpadde, en dato, …  Hidtil har vi enten brugt klasser (skildpadden) eller udvidet en eksisterende (lærd skildpadde).

DAIMIIntroducerende objektorienteret programmeringkd.3 Opførsel og tilstand  Vi kan bede et objekt udføre en af de mulige handlinger/opførsler som det råder over:  t.move(50);  Derved påvirker vi objektets tilstand  t har nu en ny position  Vores forskellige lærde skildpadder er eksempler på hvorledes vi definerer opførsel i java  opførsel defineres i metoder  f.eks. public void spirille( int l ) { (opførsel her!) }

DAIMIIntroducerende objektorienteret programmeringkd.4 Klasser i java  Opførsel og tilstand defineres i en specification. Denne specifikation hedder en klasse.  En klasse er en art støbeform som fuldstændigt definerer opførsel og værdimængde af tilstande for alle afstøbninger = objekter.

DAIMIIntroducerende objektorienteret programmeringkd.5 Eksempel  Vi ønsker at lave et kalender-system og i sådan en model er et vigtigt element naturligvis en  dato  Øvelse: Nævn tilstand for et dato objekt Nævn opførsel for et dato objekt

DAIMIIntroducerende objektorienteret programmeringkd.6 Første spæde forsøg  Vi starter meget simpelt:  Nævn opførsel og tilstand for et Date1 objekt class Date1 { public Date1() { } public void print() { System.out.println( "Datoen er 16/9/1999" ); } Klasseafgrænsning konstruktør metode

DAIMIIntroducerende objektorienteret programmeringkd.7 Metodestruktur  public void print()  {  System.out.println( "Datoen er 16/9/1999" );  } Prototype Retur-værdi Metodenavn Metodekrop Parametre

DAIMIIntroducerende objektorienteret programmeringkd.8 Brug af Date1  Nu er klassen ‘Date1’ defineret; lad os prøve den. Det gør vi med et lille testprogram:  I BlueJ kan vi direkte konstruere og påvirke objekter. class TestDate { public static void main( String[] args ) { Date1 d = new Date1(); d.print(); }

DAIMIIntroducerende objektorienteret programmeringkd.9 Programdynamik  Et program udføres een sætning ad gangen, og hver sætning udføres til ende, førend den næste evalueres: mainDate1d.print new Date1() d.print() Sys...println

DAIMIIntroducerende objektorienteret programmeringkd.10 Klasser og java-filer  Java kræver at en klasse skal ligge i en fil med samme navn som klassen, og “.java” som efternavn (suffix):  Klassen Date1 skal gemmes i “Date1.java”  Klassen TestDate skal gemmes i “TestDate.java”  Dette skjuler BlueJ, men prøv at kig i mapperne hvor BlueJ projekterne bliver gemt…

DAIMIIntroducerende objektorienteret programmeringkd.11 Udvidet eksempel  Date1 er en ‘anelse’ ufleksibel. Nyt forsøg: class Date2 { public Date2() { y = 1999; m = 9; d = 16; } public void print() { System.out.println( "Datoen er "+d+"/"+m+"/"+y ); } public void set( int year, int month, int day ) { y = year; m = month; d = day; } private int y; private int m; private int d; } Instans variable (attributter) gemmer tilstand

DAIMIIntroducerende objektorienteret programmeringkd.12 Hvad har vi gjort?  For at kunne gemme tilstand for en vilkårlig dato har vi: Erklæret tre heltal (int)’s instans variable til at opbevare datoens tilstand: (dag, måned, år) Konstruktøren initialiserer enhvert nyt datoobjekt til at have tilstanden (16/9/1999) Rettet ‘print’ til så den udskriver dette objekts tilstand på en læselig måde (‘+’ er en betydelig lettere måde at lave ‘concat’ på) Tilføjet en metode ‘set’ som kan ændre et dato objekts tilstand (så den repræsenterer en ny dato…)

DAIMIIntroducerende objektorienteret programmeringkd.13 Metoden ‘set’  public void set( int year, int month, int day ) {  y = year; m = month; d = day;  }  Der erklæres tre parametre: year, month, day, i parameterlisten, alle af typen int  (y,m,d) tildeles værdien af parametrene i metodens krop. Parameterliste

DAIMIIntroducerende objektorienteret programmeringkd.14 Formelle parametre  public void set( int year, int month, int day ) {  y = year; m = month; d = day;  }  year, month, day kaldes  formelle parametre (parametre)  Formelle parametre er en måde at navngive de faktiske data, som metoden engang vil blive kaldt med:d.set( 2000, 1, 1 ); Year spiller rollen for ’2000’ i metoden

DAIMIIntroducerende objektorienteret programmeringkd.15 Udvidet test  class TestDate {  public static void main( String[] args ) {  Date2 d = new Date2();  d.print();  d.set(2000, 1, 1);  d.print();  }

DAIMIIntroducerende objektorienteret programmeringkd.16 Aktuelle parametre  Når en metode kaldes skal man angive værdier for alle formelle parametre:  d.set( 2000, 1, 1);OK  d.set();FORKERT  d.set( 2000, 1);FORKERT  d.set( 2000, 3, 1, 23 );FORKERT  Parametrene som gives på kaldstedet kaldes  aktuelle parametre (argumenter)

DAIMIIntroducerende objektorienteret programmeringkd.17 Statisk typecheck  Compileren tjekker at antallet af aktuelle parametre samt deres typer passer med de formelle paramtre:  Turtle t = new Turtle();  d.set( ”Hejsa”, t, 7 );ulovligt, ”Hejsa” er ikke et tal, ’t’ ej heller.  Men – compileren kan (naturligvis) ikke tjekke fortolkningsfejl!  d.set( 2000, 13, 43 );Hvad er der galt???

DAIMIIntroducerende objektorienteret programmeringkd.18 Øvelse  1) Skitser en klassedefinition af Turtle inklusiv metoden ‘move’.  2) Hvilken dato udskrives der her:  d.set( 1999, 12, 32 );  d.print();  3) Er det let at lave en metode:  public void add( int days )  der kan lægge et antal dage til en dato?

DAIMIIntroducerende objektorienteret programmeringkd.19 Instantiering  En klasse er en støbeform for objekter. Man ’støber’ et nyt objekt vha. Java operatoren new:  Dette kaldes objekt instantiering Erklæring af reference variabel, d, af type Date2 Tildeling Nyt Date2 objekt Date2 d = new Date2();

DAIMIIntroducerende objektorienteret programmeringkd.20 Konstruktør  Det sidste ’Date2()’ ligner et metodekald?  Det er det faktisk også; når et objekt instantieres kaldes dets konstruktør automatisk.  Konstruktøren er bare en speciel metode som Ingen returtype har Har samme navn som klassen selv

DAIMIIntroducerende objektorienteret programmeringkd.21 Metoder med værdi  Hvad hvis vi er interesseret i, f.eks., årstallet?  Sådanne metoder har en værdi som returneres når metoden er udført. public int getYear() { return y; } public int getMonth() { return m; } public int getDay() { return d; } ReturtypeReturn-sætning

DAIMIIntroducerende objektorienteret programmeringkd.22 Return  return er en speciel sætning, der kun giver mening i en metode, og angiver hvad en metodens værdi er (hvad den evalueres til)  return-statement ::= “return” [ expression ]  Typen på udtrykket efter “return” skal passe med den i metodedefinitionen specificerede  return uden efterfølgende udtryk svarer til void

DAIMIIntroducerende objektorienteret programmeringkd.23 Return  Semantik: Når return udføres, afsluttes metodekaldet øjeblikkeligt. public void kukkuk() { System.out.println( “Gemmeleg” ); return; System.out.println( “Kuk kuk” ); }

DAIMIIntroducerende objektorienteret programmeringkd.24 Udefra og indefra...  Set fra et enkelt objekts synsvinkel kan verden deles i to: Det ”udenfor” og det ”indenfor”... indenfor – ”jeg selv” er modtagerobjekt (this) udenfor – eksplicit angivelse af modtagerobjekt (y,m,d) = (2000,1,1) (y,m,d) = (1999,12,24) (y,m,d) = (2000,9,28) d1:Date2 d2:Date2 afstemningsdato:Date2 X:TestDate d2.print(); d1.print()

DAIMIIntroducerende objektorienteret programmeringkd.25 set- og get-metoder  Et objekt bør ikke kunne ændre tilstand af et andet objekt uden dets vidende. Derfor skal aflæsning og ændring af et objekts tilstand ske gennem metode-kald. Disse kaldes set- og get- metoder.

DAIMIIntroducerende objektorienteret programmeringkd.26 Metodetyper  I de “klassiske” programmeringssprog skelner man skarpt mellem to typer af metoder: Funktioner: Metoder som returnerer en værdi; kan bruges som udtryk Procedurer: Metoder som ikke returnerer en værdi; kan bruges som en sætning.  Øvelse: Hvad er t.move(50) ? d2.year() ?

DAIMIIntroducerende objektorienteret programmeringkd.27 Overloading  En metodes navn og parameterliste kalder man en metodes signatur.  To metoder med samme navn men forskellige parameterlister opfattes som forskellige metoder.  Har man flere metoder med samme navn, siger man at metoden er overloaded.  public Date2() …  public Date2( int year, int month, int day ) …