 Jens Bennedsen 2001Multimedie programmering3A.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.
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 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”
 1999, Henrik B. ChristensenIntroducerende objektorienteret programmering8A.1 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.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.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.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
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,
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
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;
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:

 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato

 Jens Bennedsen 2001Multimedie programmering3A.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).

 Jens Bennedsen 2001Multimedie programmering3A.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!) }

 Jens Bennedsen 2001Multimedie programmering3A.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.

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.7 Metodestruktur public void print() { System.out.println( "Datoen er 16/9/1999" ); } Prototype Retur-type Metodenavn Metodekrop Eventuelle parametre

 Jens Bennedsen 2001Multimedie programmering3A.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(); }

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.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…

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.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…)

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.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 (kaldet aktuelle parametre), som metoden engang vil blive kaldt med: d.set( 2000, 1, 1 ); year spiller rollen for ’2000’ i metoden

 Jens Bennedsen 2001Multimedie programmering3A.15 Udvidet test class TestDate { public static void main( String[] args ) { Date2 d = new Date2(); d.print(); d.set(2000, 1, 1); d.print(); }

 Jens Bennedsen 2001Multimedie programmering3A.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)

 Jens Bennedsen 2001Multimedie programmering3A.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???

 Jens Bennedsen 2001Multimedie programmering3A.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?

 Jens Bennedsen 2001Multimedie programmering3A.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();

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.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

 Jens Bennedsen 2001Multimedie programmering3A.23 Return Semantik: Når return udføres, afsluttes metodekaldet øjeblikkeligt. public void kukkuk() { System.out.println( “Gemmeleg” ); return; System.out.println( “Kuk kuk” ); }

 Jens Bennedsen 2001Multimedie programmering3A.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()

 Jens Bennedsen 2001Multimedie programmering3A.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.

 Jens Bennedsen 2001Multimedie programmering3A.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() ?

 Jens Bennedsen 2001Multimedie programmering3A.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 ) …