Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.



Like dokumenter
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

JAVA Oppsummering for IS-102. Even Åby Larsen

Introduksjon til objektorientert programmering

INF1000 Metoder. Marit Nybakken 16. februar 2004

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Del 3: Evaluere uttrykk

INF 1000 høsten 2011 Uke september

UNIVERSITETET I OSLO

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

UNIVERSITETET I OSLO

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

UNIVERSITETET I OSLO

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

TDT4100 Objektorientert programmering

2 Om statiske variable/konstanter og statiske metoder.

INF1000: Forelesning 7

Løsningsforslag til eksamen i INF1000 våren 2006

UNIVERSITETET I OSLO

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

INF1000: noen avsluttende ord

Oppgave 2 (20 poeng) float og long i oppgave 2:

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Programmeringsspråket C

JAVA Oppsummering for IS-102. Even Åby Larsen

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

UNIVERSITETET I OSLO

INF1000: Forelesning 7. Konstruktører Static

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Repetisjon. Fundamentale konsepter. Objekter og klasser Grunnleggende programmering i Java Monica Strand 28.

INF1000 Uke 14. Løsningsforslag - prøveeksamen. Institutt for Informatikk Fredrik Sørensen og Arne Maus

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

UNIVERSITETET I OSLO

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder

Del 1 En oversikt over C-programmering

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Seminaroppgaver IN1010, uke 2

Repitisjonskurs. Arv, Subklasser og Grensesnitt

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Programmering Høst 2017

Diverse eksamensgaver

Dagens tema Kapittel 8: Objekter og klasser

UNIVERSITETET I OSLO

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

INF1000 (Uke 6) Mer om metoder, tekster

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

Java-kurs. Andreas Knudsen Nils Grimsmo 9th October 2003

Leksjon 2. Setninger og uttrykk

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Blokker og metoder INF1000 (Uke 6) Metoder

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Hva er en metode. Hva skjer når vi kaller en metode

AlgDat 10. Forelesning 2. Gunnar Misund

2 Om statiske variable/konstanter og statiske metoder.

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

INF Notater. Veronika Heimsbakk 10. juni 2012

Eksamen. Objektorientert Programmering IGR 1372

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

INF1000 Behandling av tekster

Forelesning inf Java 5

UNIVERSITETET I OSLO

Forelesning inf Java 5

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

TOD063 Datastrukturer og algoritmer

UNIVERSITETET I OSLO

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Enkle generiske klasser i Java

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Leksjon 7. Filer og unntak

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

UNIVERSITETET I OSLO

Transkript:

Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører (constructors), metoder (methods) Fra nå: Interaksjon mellom objekter 2 Abstraksjon Dele oppgaven inn i deloppgaver og deloppgaver i del deloppgaver også kalt Devide and conquer (splitt og hersk) Når man har klart å løse en av deloppgavene kan man glemme denne og konsentrere seg om høyre nivå problemer Lettere å håndtere etter hvert som programmene blir større og mer komplekse 3 1

Modulisering Prosess for å dele helheten inn i veldefinerte deler som kan lages og kjøres separat og som vil fungere sammen på en veldefinert måte 4 Bileksempel En gruppe ingeniører har bilen i sin helhet som prosjekt og bryr seg om design av bilen, hvor motoren skal være, plassering av seter etc En annen gruppe ser på motoren som sitt prosjekt (sin modul) og fokuserer på alle små og store detaljer i denne En annen gruppe vil se på tennpluggene (egen modul) Den første gruppen abstraherer seg fra tekniske detaljer etc etc 5 Modulisering vs. Abstraksjon Modulisering er prosessen for å del større problemer inn i mindre deler, mens abstraksjon er evnen til å ignorere detaljer for å fokusere på helheten 6 2

Bileksempelet igjen Bil som dataprogram: Bilen er et objekt som består av masse objekter som igjen består av masse objekter Bil Girkasse Motor Hjul Seter Etc. Tennplugg Stempel Etc. 7 Klokke Ett objekt 09:13 0 9 8 Klokke Bryr seg kun om antall timer fra 0 23 09:13 09 13 Tre objekter Bryr seg kun om antall minutter fra 0 59 9 3

Implementere klokke programmet De to tallene for henholdsvis timer og minutter: Én klasse for et to sifret tall med en aksessmetode for å hente verdien og to mutatormetoder for å sette verdien og øke den To objekter med forskjellige start og sluttverdier (00 59 og 00 23) 10 Klasse for to sifret visning NumberDisplay: Klassen må lagre to verdier; en for grenseverdien og en for aktuell tallverdi public class NumberDisplay { private int limit; private int value; } 11 Klasse for selve klokken ClockDisplay Klassen må lagre to to sifrede objekter public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; } 12 4

Objektdiagram hours mydisplay: ClockDisplay :NumberDisplay 09 minutes :NumberDisplay 13 Objektreferanser: Variabler av typen objekt lagrer referanser til objekter 13 Klassediagram ClockDisplay Kan lage flere objekter av en klasse NumberDisplay 14 Objekt /Primitive datatyper Java kjenner to svært forskjellige datatyper: Primitive datatyper Forhåndsdefinerte i programmeringsspråket byte, short, int, long, float, double, char, boolean Objekt datatyper Definert av klasser Noen forhåndsdefinert i Java (eks: String), andre lager vi selv Primitive datatyper lagrer verdien direkte i variabelen, mens objekt datatypen lagrer en referanse til et objekt som kan lagre mange verdier i sine respektive variable 15 5

Excercise 3.5 Start BlueJ, open the clock display example and experiment with it, create a ClockDisplay object, then open an inspector window for this object. With the inspector open, call the object s methods. Watch the displaystring field in the inspector. Read the project comment (by double clicking the text note icon on the main screen) to get more information. 16 Logiske operatorer Opererer på booleanverdier (true or false) og produserer booleanverdier som resultat && (and) (or)! (not) a&& b er true hvis begge er true og false hvis en av dem, eller begge er false a b er true hvis enten a, b eller begge er true og false hvis begge er false!a er true hvis a er false og false hvis a er true 17 Excercise 3.9 Hvilke av følgende uttrykk returnerer true?! (4 < 5)! false (2 > 2) ( (4 == 4) && (1 < 0) ) (2 > 2) (4 == 4) && (1 < 0) (34!= 33) &&! false 18 6

Lenking av tekststrenger Operatoren + oppfører seg forskjellig avhengig av typen den operer på Eks: 42 + 12 (legger sammen tallene til 54, int+int = int) Java + with BlueJ (lenker sammen setningene til Javawith BlueJ, String + String = String) answer: + 42 (gjør om 42 til String og lenker sammen til answer: 42, String + int = String return 0 + value; (hvis value lagrer tallet 3 (int) vil 03 (String) returneres Return + value; (hvis value lagrer tallet 13 (int) vil 13 (String) returneres 19 Modulusoperatoren (%) Modulusoperatoren gir oss resten ved heltallsdivisjon Tenk dere 8 pizzastykker som skal deles på 3 personer int antallpizzastykkertilhver = 8 / 3; int antallpizzastykkerigjen = 8 % 3; 20 Modulus Hva er resultatet av følgende regnestykker? 3% 3 = 6 % 3 = 30 % 3 = 10 % 5 = 16 % 3 = Hvis vi tar modulus 2 på et tall, hvilken egenskap ville dette ha? 21 7

Objekter som lager objekter new ClassName ( paramterliste) Eksempel: hours = new NumberDisplay (24); minutes = new NumberDisplay (60); 22 Flere konstruktører i en klasse Både konstruktører og metoder kan ha instanser med samme navn så lenge de ikke har samme antall parametere Eksempel: new ClockDisplay(); new ClockDisplay(hour, minute); 23 Interne metodekall methodname ( parameterliste) Eksempel: Metodesignatur: private void updatedisplay() Metodekall: updatedisplay(); 24 8

Eksterne metodekall Metoder kan kalle metodene til andre objekter: object. methodname ( paramterliste) Eksempel: public void timetick() { minutes.increment(); if (minutes.getvalue() == 0) { hours.increment(); } updatedisplay(); } 25 9