Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.

Liknende presentasjoner


Presentasjon om: "Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring."— Utskrift av presentasjonen:

1 Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

2 Objektorientert modellering – Sentrale begreper  Objekter er de tingene problemet vi skal løse handler om. Vi modellerer dem som om de var «levende». Objekter har mye kunnskap om seg selv. Eksempler: Studenter, telefoner, forelesninger, …  Kunnskapen som objektet har kan deles i to  Attributter: navn, adresse, tlfnr, produsent, tema, …  Operasjoner: finn navn, gi karakter, send SMS, sett tema  Tilstanden til et objekt er definert som verdien til alle attributtene  Eksempler: «Ole Hansen», «Storgt 4, 7000 Trondheim», 45675600, «Samsung». «Objektorientert modellering», ….  Vi instruerer et objekt om å utføre en operasjon ved å sende en melding til det. Vi spiller rollen «klient», objektet spiller rollen «tjener»  En klasse er en beskrivelse av objekter med samme mengde attributter og samme mengde operasjoner («atferd») Forelesning 1a, side 2

3 Problemstilling  Klassen Student  Meldinger vi ønsker å kunne sende til et objekt (operasjoner)  finn navn og alder  registrer en ny karakter (kun karakter, ikke fag(!)), gyldig karakter A-F  finn gjennomsnittskarakteren (alle karakterene teller likt)  hent ut alle registrerte karakterer som en streng som også inneholder personalia  Hvilke attributter finner vi? (Verdiene til attributtene gir objektets tilstand) Forelesning 1a, side 3

4 Innkapsling  Utgangspunkt for diskusjoner og forbedringer: class Student { private final String navn; private final int alder; public Student(String navn, int alder) { this.navn = navn; this.alder = alder; } public String getNavn() { return navn; } public int getAlder() { return alder; } Forelesning 1a, side 4 Lag kode med et lite testprogram. Alternativ: Offentlige variabler – et problem? Diskuter innkapsling.

5 Innkapsling  Kunnskap om data (datastrukturer og datatyper) og atferd (implementasjon av operasjoner) er gjemt inne i objektene. Dette er dermed skjult for klienten, som er den som bruker objektene.  Dataene skjules ved å gjøre variablene private. Forelesning 1a, side 5

6 Klassevariabler og –metoder - static  Objektvariabelen alder erstattes med fødselsdatoen på formen ”ddmmåååå” (datatype String)  Erstatt konstruktøren slik at den tar navn og fødselsdato som argument  Programmer ny utgave av getAlder()  Hent ut de fire siste sifrene i fødselsdatoen og omform til heltall  Hent ut årstallet vi er inne i nå: GregorianCalendar dagensDato = new GregorianCalendar(); int detteAar = dagensDato.get(Calendar.YEAR);  Testprogram class TestStudent { public static void main(String[] args) { Student studenten = new Student("Ole Andreas Thomassen", "10101980"); System.out.println("Studenten heter " + studenten.getNavn() + " og er “ + studenten.getAlder() + " år gammel."); } }  Registrer ”HiST” som skole for alle studentene  Skriv kode som holder orden på hvor mange Student-objekter som er opprettet  Utvid testprogrammet Forelesning 1a, side 6

7 Om static  «static» er en modifikator som markerer noe som er felles for alle objektene av en klasse – ikke nødvendigvis statisk på den måten at det ikke kan endres  Klassevariabler  Et sett med variabler pr. klasse. Variablene er felles for alle objekter som tilhører klassen. De eksisterer selv om det ikke er laget noen objekter av klassen. (Dette i motsetning til objektvariabler, det vi har ett sett pr. objekt.)  Objektmetoder kan referere til klassevariabler, men klassemetoder (static- metoder) kan ikke referere til objektvariabler.  Modifikatoren «final» betyr at variabelen ikke kan forandre verdi, og kan brukes både for objekt- og klassevariabler  public static void main(String[] args) (se oppg 4 side 395) Forelesning 1a, side 7

8 Klassediagram Forelesning 1a, side 8

9 Karakterene - char-tabell som medlem i klassen Student  Objektvariabel  private char[] karakterer  Hvor oppretter vi tabellen?  Hvor stor bør den være?  Kan tabellen bli full? Hva gjør vi i tilfelle da?  Utvikle operasjonene knyttet til karakterene parallelt med utvidelse av testprogrammet foran  Detaljering av operasjonene  registrer en ny karakter, gyldig karakter A-F  hva hvis små bokstaver brukes som karakter?  hva gjør vi hvis karakteren er ugyldig?  metodehode?  finn gjennomsnittskarakteren (alle karakterene teller likt)  hvordan beregne gjennomsnittet av bokstaver?  snitt midt mellom to karakterer, skal gi som resultat den beste karakteren  metodehode  hent ut alle registrerte karakterer som en streng som også inneholder personalia  toString()-metode? Forelesning 1a, side 9

10 Ekstraoppgave  Lag klientprogram Forelesning 1a, side 10


Laste ned ppt "Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring."

Liknende presentasjoner


Annonser fra Google