Programmering – fra instruktion til modellering

Download Report

Transcript Programmering – fra instruktion til modellering

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
dIntProg, E12
Klasser og objekter
dIntProg, E12
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
dIntProg, E12
Tilstand og opførsel for Wombat
dIntProg, E12
Eksempler på basale begreber
•
•
•
•
•
•
•
•
•
•
•
•
•
dIntProg, E12
Tilstand
Opførsel
Feltvariabel
Type
Konstruktør
Metodesignatur
Metode
Returtype
Parameter
Argument
Accessor
Mutator
Tildeling
Tilstand og opførsel for Person
dIntProg, E12
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; }
public int getAge()
{ return age; }
}
dIntProg, E12
Opførsel
Tilstand
public class Person {
private String name;
private int age;
...
}
• Primitiv type
• Objekttype
7
– String, Date, Skuespiller, ...
– ””, (3, 9, 2012), (”David”, 73)
Objekt-reference
name
”David”
dIntProg, E12
– access modifier
– type (værdi)
– navn
– int, boolean, ...
– 42, true, ...
Primitiv variabel
age
• Attribut (feltvariabel)
• 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);
dIntProg, E12
Personreference og personobjekt
p
(”David”, 71)
Person p= new Person(”David”, 69);
p.birthday(); p.birthday();
dIntProg, E12
En reference, to objekter
Person p;
p
p= new Person(”David”, 69);
p.birthday();
p
(”David”, 70)
Person p;
p= new Person(”David”, 69);
p.birthday();
p= new Person(”Chris”, 19);
p.birthday();
dIntProg, E12
p
(”David”, 70)
(”Chris”, 20)
Opførsel (metoder)
public class Person {
• Konstruktør
/** Opret en person
* med navn n og alder a
•
*/
public Person(String n, int a)
{ ... }
– ingen returtype
– samme navn som klassen
Mutator (!)
– opdaterer (del af) objektets
tilstand
• Accessor (?)
/** Personen fylder år **/
public void birthday()
{ ... }
– aflæser (del af) objektets
tilstand
• Returtype
/**
* Returnerer personens alder
•
*/
public int getAge()
{ ... }
}
dIntProg, E12
– 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()
{ ... }
}
dIntProg, E12
• 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
dIntProg, E12
Eksempel
?
?
?
Keyword
Identifiers
Literals
dIntProg, E12
?
?
Special
White space
characters
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
dIntProg, E12
• Accessor (?)
– aflæsningsmetode
• Mutator (!)
– opdateringsmetode
• Assignment
– tildeling (=)
• Næste gang:
• Declaration
– erklæring (variabel, metode, ...)
• Initialization
– initialisering
• Block
– blok: { ... }
• Statement
– sætning