Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afMaja Brandt Redigeret for ca. et år siden
1
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik, null
2
DAIMIIntroducerende objektorienteret programmering4B.2 Tilstand Et program er en model. Det specielle ved computerbaserede modeller er deres dynamik - ting “sker” og “ændrer sig”, når programmet kører. Det fundamentale begreb er tilstand, vi taler om hvilken tilstand de forskellige objekter har, og hvorledes tilstanden ændrer sig, når vi påvirker dem ved at kalde metoder. Eks: Skildpadden skifter tilstand ved move
3
DAIMIIntroducerende objektorienteret programmering4B.3 Erklæring Den basale erklæring af et objekt har I allerede set: Turtle t = new Turtle(); Faktisk er dette en ‘forkortelse’ for flg: Turtle t; t = new Turtle(); Erklæring af t Tildeling til t
4
DAIMIIntroducerende objektorienteret programmering4B.4 Erklæring Turtle t; betyder: “Opret en reference variabel, kaldet t, som kan referere til objekter af klassen Turtle” t = new Turtle(); betyder: “Skab et objekt fra klassen Turtle og kald konstruktøren på objektet; new returnerer en reference til dette objekt, som så tildeles til reference variablen, t”
5
DAIMIIntroducerende objektorienteret programmering4B.5 Den grafiske version Turtle t; t: t = new Turtle(); t: (Turtle objekt) Navnet, t, repræsenterer en reference til objektet
6
DAIMIIntroducerende objektorienteret programmering4B.6 Tilstand En beskrivelse af tilstand, en værdi, kræver: Substans/fysisk repræsentation: “plads”/objekt i computerens hukommelse, det sørger ‘new’ for Identifikation/navn Unik måde at referere til objektet, vores reference variable er en sådan unik reference Type Angivelse af tilstandens type/klasse, det er så indholdet af vores objekt
7
DAIMIIntroducerende objektorienteret programmering4B.7 Typer i Java Java har to slags typer: Klassebaserede: Turtle, Date2, Account, … Grundlæggende: int, double, char, boolean De grundlæggende datatyper repræsenterer typer som direkte kan håndteres af den underlæggende hardware, og derfor behandles de anderledes end objekter af klasser
8
DAIMIIntroducerende objektorienteret programmering4B.8 Erklæring af heltal Erklæring af int skrives på samme måde: inty; Navnet ‘y’ repræsenterer værdien, her 7 ‘new’ giver ingen mening her, der er afsat plads til værdien int y; y = 7 7 y:
9
DAIMIIntroducerende objektorienteret programmering4B.9 Reference versus værdi I Java håndteres objekter af klasser altid referencebaseret, og objekter af grundlæggende typer altid værdibaseret. t: (Turtle objekt) 7 y:
10
DAIMIIntroducerende objektorienteret programmering4B.10 Manipulation Vi manipulerer objekter ved at kalde metoder. Da grundlæggende typer ikke er repræsenteret vha. objekter men værdier, er der ingen metoder at kalde. Heldigvis… Sammenlign: x/(y+1) med x.divide( y.add(1) ) Operationer på grundlæggende typer håndteres direkte af java compileren
11
DAIMIIntroducerende objektorienteret programmering4B.11 Grundlæggende typer Java er udstyret med nogle få grundlæggende typer Heltal-4562 0 32 2000001 “Reelle tal”0.0 -324.1231 2.334E-25 Tegn‘a’ ‘D’ ‘#’ Sandhedsværditruefalse På Java’sk hedder de: intdoublecharboolean
12
DAIMIIntroducerende objektorienteret programmering4B.12 Grundlæggende typer double x, y; x = 2.345; y = 32.45*x + 921.21; char c; c = ‘a’; boolean b; b = true; “Syntaktisk sukker” - erklæring og initialisering char c = ‘a’; boolean b = true; for (int i = 0; i < 4; i++)
13
DAIMIIntroducerende objektorienteret programmering4B.13 Udtryksevaluering Udtryk evalueres efter Java’s præcedensregler - og disse afspejler naturligvis sædvanlige matematiske konventioner: 5+3*2 = 11
14
DAIMIIntroducerende objektorienteret programmering4B.14 Øvelse t = new Turtle(); t: (Turtle) Garbage Collection
15
DAIMIIntroducerende objektorienteret programmering4B.15 null En reference kan angive at den ikke refererer til noget element. Da har den værdien null Date i = new Date(); i.set( 1999, 3, 4 ); i = null; i: 1999,3,4
16
DAIMIIntroducerende objektorienteret programmering4B.16 Semantik af tildeling int i, j; i = 42; j = 5637; i = j; Date i = new Date(), j = new Date(); i.set(1999,3,4); j.set(1999,12,31); i = j; j.set(1888,12,24); 5637 i: j: i: j: 1888,12,241999,3,4
17
DAIMIIntroducerende objektorienteret programmering4B.17 Værdi- contra referencetildeling Grundlæggende typer har tildeling af værdi; klassebaserede tildeling af referencer. Men… Hvordan kopierer vi så indholdet? public Object clone() j = (Date) i.clone();
18
DAIMIIntroducerende objektorienteret programmering4B.18 Semantik af sammenligning int i, j; i = 42; j = 42; if (i == j) { … } Date i = new Date(), j = new Date(); i.set( 1999, 3, 4 ); j.set( 1999, 3, 4 ); if (i == j) { … } 42 i: j: i: j: 1999,3,4
19
DAIMIIntroducerende objektorienteret programmering4B.19 Reference/værdisammenlign. Grundlæggende typer har sammenligning af værdi; klassebaserede sammenligning af referencer. Men… Hvordan sammenligner vi så indholdet? public boolean equals( Object o ) i.equals( j ); Pas på ikke at sammenligne æbler med pærer!
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.