 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
Forelæsning 3.1 Collections Javas for-each løkke
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
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
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
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.
Objektorienteret programmering – UML2Java.  Jens Bennedsen 2001Multimedie programmering8.2 Indhold Klasser og associering til enkelt objekt –Programmering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Variabler, klassevariabler, identitet og lighed, collections
 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.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
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.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
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)
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 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.
 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;
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Klasser og objekter (Afsnit i manualen).
Quiz – Uge 4 – torsdag – første time
Forelæsning Uge 3 – Mandag
Quiz – Uge 4 – torsdag – første time
Parametrisering En kort introduktion.
Forelæsning Uge 2 – Mandag
Quiz – Uge 4 – torsdag – første time
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse

 Jens Bennedsen 2001Multimedie programmering4.2 Modellerings perspectiver Begrebslig –Beskriver personers opfattelse af verden –Uafhængig af software Specifikation –Interfaces af klasser (typer) Implementation –Interne features i en klasse

 Jens Bennedsen 2001Multimedie programmering4.3 Specifikationer HVAD er det for egenskaber et begreb har (i en given kontekst) Hvad er egenskaberne for følgende begreber? –Terning –Rafle bæger –Studerende I Java udtrykker vi HVAD med et interface

 Jens Bennedsen 2001Multimedie programmering4.4 Interface /** * Studerende repræsenterer en studerende på et universitet * Jens Bennedsen sept 24, 2001 */ public interface Studerende { /** * returner navnet */ public String getName(); /** * gennemsnits karakteren for alle beståede eksaminer */ public Karakter gennemsnit(); /** * antal beståede fag */ public int antalBeståedeFag(); /** * registrer at endnu et fag bestået */ public void fagBestået(Karakter k); }

 Jens Bennedsen 2001Multimedie programmering4.5 Havd er et interface Denne beskriver at en studerende har egenskaberne –getNavn –gennemsnit –antalBeståedeFag –fagBestået –Hvorfor har en studerende egenskaben fagBestået? … men intet om HVORDAN disse egenskaber skal realiseres i en computer

 Jens Bennedsen 2001Multimedie programmering4.6 Roller interface Session … duration pre: start og end er kaldt før post: Varigheden af udlejningen returneres... end Session Anvender skal opfylde kravene til operationen kan forvente det operationen gør Implementør skal opfylde det operationen gør kan forvente kravene til operationen AnvenderImplementør Pre betingelseSkal opfyldeKan antage Post betingelse Kan antageSkal opfylde

 Jens Bennedsen 2001Multimedie programmering4.7 Javadoc Egenskaberne beskrives i Javadoc Denne kan så generere en beskrivelse, der kan læses af –Anvenderen, så han ved hvad operationen gør (og hvilke krav der er til at den gør det) –Implementøren, så han ved hvad han skal implementere (og under hvilke forudsætninger han kan gøre det)

 Jens Bennedsen 2001Multimedie programmering4.8 Student

 Jens Bennedsen 2001Multimedie programmering4.9 Indtil nu … Så er HVAD defineret Interfaces kan vi ikke lave forekomster (objekter af) – hvad så?

 Jens Bennedsen 2001Multimedie programmering4.10 Hvordan HVORDAN defineres i en klasse der implementerer et (eller flere) interfaces Nu skal vi finde ud af, HVORDAN vi vil sørge for at et studerendeImpl objekt kan svare på dets navn, antalBeståedeFag og gennemsnit (hvilken VIDEN (attributter) objektet skal have) –En der indeholder navnet? –En der indeholder årskortet? –En der indeholder antallet af beståede fag? –En der indeholder titlerne på alle de beståede fag? –En der indeholder gennemsnitskarakteren? –En der indeholder uddannelsen den studerende er indskrevet på? –En der indeholder fakultet den studerende er indskrevet på? –En der indeholder hvor meget SU den studerende har brugt? –En der indeholder …

 Jens Bennedsen 2001Multimedie programmering4.11 Class Der kan være følgende viden for at kunne opfylde egenskaberne –Navn –Gennemsnit –Antal beståede fag public class StuderendeImpl implements Studerende { … private String navn; private Karakter gennemsnit; private int antalBeståedeFag; } Viden (attributter) StuderendeImpl skal have alle egenskaberne defineret i Studerende Her ANVENDER jeg Karakter, derfor benytter jeg interfacet (jeg er kun interesseret i HVAD – ikke HVORDAN)

 Jens Bennedsen 2001Multimedie programmering4.12 Implementation af egenskaberne Hvordan implementerer jeg egenskaberne? public class StuderendeImpl implements Studerende { public String getNavn() { return navn;} public Karakter gennemsnit() {return gennemsnit;} public int antalBeståedeFag() {return antalBeståedeFag;} public void fagBestået(Karakter k) { … } private String navn; private Karakter gennemsnit; private int antalBeståedeFag; } Det er værdien af attributten antalBeståedeFag der returneres

 Jens Bennedsen 2001Multimedie programmering4.13 Tilstand Attribut (variabel) –type –værdi Simpel type –int, boolean,... –42, true Klassebaseret type –String, Person,... –”Bruce”, { ”Bruce”, 42 } navn ”Peter” antalBeståedeFag 3 public class Stude… {... private String navn; private int antalBeståedeFag; private Karakter gennemsnit; } objekt-reference

 Jens Bennedsen 2001Multimedie programmering4.14 I BlueJ Den viden som objektet studeren_jens har (de aktuelle værdier)

 Jens Bennedsen 2001Multimedie programmering4.15 fagBestået Hvordan implementerer vi metoden fagBestået() ? Kender vi ikke! public class StuderendeImpl implements Studerende { … public void fagBestået(Karakter k) { //beregn nyt gennemsnit double gns = (gennemsnit.getKarakter()*antalBeståedeFag+k.getKarakter())/(antalBeståedeFag+1); gennemsnit = new KarakterImpl(gns, gennemsnit.getSkala()); antalBeståedeFag=antalBeståedeFag+1; } … } 1.Den skal opdatere antalFagBestået 2.Den skal opdatere gennemsnit 1. Læg en til! 2.Hmmmm … gennemsnit = (karakter 1 + karakter 2 + … + nyKarakter) antalFagBestået karakter 1 + karakter 2 + … = gennemsnit før *antalFagBestået før

 Jens Bennedsen 2001Multimedie programmering4.16 navn, … gennemsnit getNavn antalBeståedeFag fagBestået Klasse- og objektmetoder Konstruktør –speciel metode der hører hjemme på klasseniveau –opretter og initialiserer en forekomst (objekt, instans) –klassemetoder specificeres med nøgleordet static, men ikke konstruktører! –BlueJ: højreklik på klassen Øvrige metoder –beskrives i klassen, men opererer på objektniveau –forudsætter at der er oprettet et objekt –BlueJ: højreklik på objektet StuderendeImpl StuderendeImpl(”Poul”) StuderendeImpl (”Jens”)

 Jens Bennedsen 2001Multimedie programmering4.17 toString() toString –en metode der er arvet fra Object –god at have til test-formål –lav den selv (ellers...) –’+’ betegner (også) konkatenation af strenge –’\n’ betegner et linieskift public class StudenrendeImpl {... /** Returnerer en String- * repræsentation af personens */ tilstand public String toString() { return ”Navn: ” + navn + ”\n” + ”gennemsnit:” + gennemsnit.toString(); }

 Jens Bennedsen 2001Multimedie programmering4.18 Objektinteraktion metode 2 metode 4 metode 1 metode 3 metode 2 metode 4 metode 1 metode 3 metode 2 metode 4 metode 1 metode 3