Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertHilde Claussen Endret for 9 år siden
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
Liknende presentasjoner
© 2023 SlidePlayer.no Inc.
All rights reserved.