Klasser og objekter (Afsnit 4 + 5 i manualen)
Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed
Klasser og objekter
Tilstand og opførsel Tilstand ethvert objekt har sin egen tilstand Opførsel objekters opførsel er defineret ved et sæt metoder udførelse af en metode kan ændre et objekts tilstand en metode kan have parametre; ved kald af metoden leveres et passende antal argumenter
Tilstand og opførsel for Wombat
Eksempler på basale begreber Tilstand Opførsel Feltvariabel Type Konstruktør Metodesignatur Metode Returtype Parameter Argument Accessor Mutator Tildeling
Tilstand og opførsel for Person
Klasse for begrebet Person public class Person { private String name; private int age; Tilstand public Person(String n, int a) { name= n; age= 0; } public void birthday() { age= age + 1; } Opførsel } public int getage() { return age; }
Tilstand public class Person { private String name; private int age;... } Primitiv variabel age 7 Objekt-reference name David Attribut (feltvariabel) access modifier type (værdi) navn Primitiv type int, boolean,... 42, true,... Objekttype String, Date, Skuespiller,..., (3, 9, 2012), ( David, 73) Variabler primitiv variabel: variabel der kan holde en værdi af den anførte type objektreference: variabel der kan referere til et objekt af den anførte type
Personreference og personobjekt p ( David, 69) Person p= new Person( David, 69);
Personreference og personobjekt p ( David, 71) Person p= new Person( David, 69); p.birthday(); p.birthday();
En reference, to objekter Person p; p= new Person( David, 69); p.birthday(); p p ( David, 70) Person p; p= new Person( David, 69); p.birthday(); p ( David, 70) p= new Person( Chris, 19); p.birthday(); ( Chris, 20)
To referencer, et objekt Delte referencer int a, b; a= 7; b= a; b= b + 1; a b 7 8 Person a, b; a= new Person( David, 69); b= a; b.birthday(); a b ( David, 70)
Opførsel (metoder) public class Person { } /** Opret en person * med navn n og alder a */ public Person(String n, int a) {... } /** Personen fylder år **/ public void birthday() {... } /** * Returnerer personens alder */ public int getage() {... } Konstruktør ingen returtype samme navn som klassen Mutator (!) opdaterer (del af) objektets tilstand Accessor (?) aflæser (del af) objektets tilstand Returtype specificerer hvilken type værdi der returneres fra metoden (void mutator) Parametre type og navn ved flere parametre adskilles med komma
Afskærmning (synlighed) public class Person { } private String name; private int age; public Person(String n, int a) {... } public void birthday() {... } public int getage() {... } Attributter objektets indkapslede tilstand erklæres (oftest) private kan kun tilgås fra klassens egne metoder (vedkommer ikke andre) Metoder objektets facade (også kaldet grænseflade) til omverdenen erklæres (oftest) public kan kaldes fra andre klasser signatur: hovedet af en metode (access modifier, returtype, navn og parametre)
Syntaktiske elementer i Java Keywords (nøgleord, reserverede ord) class, new, public, private Identifiers (navne) Person, p, a, turn, move, Date, day, month, year,... Literals Aarhus Universitet, 1928,... Special characters (specialtegn) (, ),., {, }, =, +, - ==, <, <=, //, /*, */, /**,... White space linieskift, mellemrum, tab,... kan indsættes vikårligt mellem syntaktiske elementer uden at betydningen påvirkes
Eksempel????? Keyword Identifiers Literals Special characters White space
Opsummering (engelsk/dansk) Object objekt, forekomst, instans Field feltvariabel, instansvariabel, attribut Constructor konstruktør Method metode Method signature metodesignatur Method body metodekrop Parameter return type og return statement Accessor (?) aflæsningsmetode Mutator (!) opdateringsmetode Assignment tildeling (=) Næste gang: Declaration erklæring (variabel, metode,...) Initialization initialisering Block blok: {... } Statement sætning