Repetisjon INF 1000 – våren 2007 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Anne Landro, Are Magnus Bruaset og Arild Waaler.

Slides:



Advertisements
Liknende presentasjoner
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.
Advertisements

Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Java 14 Et eksempel fra bioinformatikk: analyse av biologiske sekvenser Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
IS-102 Klassedefinisjoner
Oblig4 - forklaringer Arne og Ole Christian.
Eiendomregister mars 2002 Arne Maus. import java.util.*; import inf101.*; /* Klasse med main() som starter hele programmet */ class EiendomsregisterMain.
Eiendomsregister - eksempel
C# for javaprogrammerere
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
En gang til!? .
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
INF150 Programmering mandag 11.9
PHP oversikt. Basis egenskaper Grensesnitt med web tjener Skripttaggene Kommentartegn Ikke case sensitiv Avslutningstegn for instruksjoner.
Kap 10 Graf.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
Grunnleggende PHP - Ronny Mandal1 Grunnleggende PHP.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 3 Mer om uttrykk Terminal I/O Forgreninger
Java 11 Programmering med og uten objekter: hva er forskjellen?
INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Java 5 Litt mer om løkker Arrayer Metoder Ole Christian Lingjærde
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
INF1000 (Uke 13) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
1 Inf1000 (Uke 10) Oppgaveløsning. Hashmap Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
INF1000 (Uke 11) Programmering
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Iterator i Java boolean hasNext() E next() void remove()
Variabler, datatyper og uttrykk
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
IS-102 Interaksjon med objekter
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Repetisjon INF 1000 – våren 2007 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Anne Landro, Are Magnus Bruaset og Arild Waaler

Mål for INF1000 Gi grunnleggende forståelse av noen sentrale begreper, problemstillinger og metoder innen informatikk Lære å programmere Gi noe innsikt i datamaskiners muligheter og begrensninger Lære noe om samfunnsmessige konsekvenser av bruk av informasjonsteknologi

Programvareutvikling - oversikt 1. Først har vi et problem vi skal løse (en oppgave) 2. Finn en fremgangsmåte (=algoritme) for problemet 3. Hvilke data beskriver problemet / algoritmen? 4. Skriv et (Java-)program, syntaktisk korrekt slik at kompilatoren ikke gir feilmeldinger 5. Test ut programmet, sjekk at det gir riktig svar

Representasjon av data Variabler - tre egenskaper: Et navn (ulikt alle andre variablers) En type (tekst, heltall, desimaltall,…) Et data-innhold, en verdi

Minnelokasjon Java-program Variabel

Datamaskiner håndterer disse på forskjellig måte Heltall er alltid eksakte, mens desimaltall har bare en viss nøyaktighet Heltall og desimaltall (flyttall )

Handlingssetninger, tilordning Tilordningsetninger (v.s. = h.s;) gir en ny verdi til en variabel På venstre side (v.s.) står navnet til en variabel Tegnet = leses: ”settes lik” På høyre side (h.s.) står et regnestykke, verdien regnes ut

Addisjon (+) har mange virkemåter Mellom to heltall gir ”+” en heltallsaddisjon, Mellom to flytende tall gir ”+” en desimaltallsaddisjon, Mellom et heltall og et flytende tall gir ”+” en desimaltalls-addisjon: Mellom to tekststrenger gir ”+” en sammenskjøting (konkatenering) av strengene ”Hallo ” + ”verden”

Konvertering Hvis nødvendig vil Java automatisk (implisitt) konvertere heltall til desimaltall Eksempler: double x = 7; int a = 15; double x = a; double x = (7 + 14) * ;

Mer om konvertering Java vil ikke automatisk konvertere desimaltall til heltall, siden det generelt fører til en endring i verdien: int a = 7.15; // Ikke lov!! double x = 15.6; int a = x; // Ikke lov!! int a = 3.14 * 7 / 5; // Ikke lov!!

Heltallsdivisjon Java konverterer ikke fra heltall til desimaltall når to heltall adderes, subtraheres, multipliseres eller divideres: :heltall (int) : heltall (int) 631 * 367 :heltall (int) 7 / 2: heltall (int)

Heltallsdivisjon Legg spesielt merke heltallsdivisjonen: Når to heltall divideres på hverandre i Java blir resultatet et heltall, selv om vanlige divisjonsregler tilsier noe annet. Dette kalles heltallsdivisjon, og resultatet er det samme som om vi fulgte vanlige divisjonsregler og så avrundet nedover til nærmeste heltall. Dvs (7/2) = = (int) (7.0/2.0) = = 3.

Tekster og klassen String En tekststreng er en sekvens av tegn (null, en eller flere), f.eks. ”” ”*” ”Kristina” Hver tekststreng vi lager er et objekt av typen String

Konkatenering Operatoren + har flere betydninger i Java: mellom to tall: addisjon mellom to tekster : tekstkonkatenering mellom tekst og annen type : tekstkonkatenering Eksempel på overlasting av metode

Eksempel >java Konkatenering Sum: Husk at uttrykk i Java beregnes fra venstre mot høyre: class Konkatenering { public static void main (String[] args) { System.out.println(”Sum: ” ); System.out.println( ” ” ); }

Deler av en tekststreng Generelt: s.substring(index1, index2) Siste del av en tekststreng: Første posisjon som skal være med Første posisjon som ikke skal være med String s = ”Paris er hovedstaden i Frankrike”; String s1 = s.substring(6); // Nå er s1 tekststrengen ”er hovedstaden i Frankrike”

Fra tall til tekst og omvendt For å konvertere fra tall til tekst: For å konvertere fra tekst til tall: int k = Integer.parseInt(s); double x = Double.parseDouble(s); (og tilsvarende for de andre numeriske datatypene) String s1 = String.valueOf(3.14); String s2 = String.valueOf('a'); String s3 = String.valueOf(false); String s4 = "" String s5 = "" + 'a'; String s6 = "" + false;

Enkel if-setning if (logisk uttrykk){ /* Her kommer de instruksjonene som skal utføres når det logiske uttrykket er sant (true) */ }

If-setning med else-gren if (logisk uttrykk){ /* Her kommer de instruksjonene som skal utføres når det logiske uttrykket er sant (true) */ } else { /* Her kommer de instruksjonene som skal utføres når det logiske uttrykket er usant (false) */ }

If-setninger kan settes sammen if (x < 0) { System.out.print("Tallet er negativt"); } else if (x == 0) { System.out.print("Tallet er null"); } else { System.out.print("Tallet er positivt"); }

Eksempel: Adgang til studier Problem: For å få adgang til universitetet i Ruritania må man oppfylle begge disse kravene: alder  18 karaktersnitt > 4.8 Lag et program som, gitt en persons alder og karaktersnitt, skriver ut på skjerm om personen får adgang til universitetet eller ikke.

Løsning import easyIO.*; class AdgangTilUniversitetet { public static void main (String [] args) { int alder; double karSnitt; Out skjerm = new Out(); In tast = new In (); skjerm.out(“Alder: “); alder = tast.inInt(); skjerm.out(“Karaktersnitt: “); karSnitt = tast.inDouble(); if (alder >= 18) { if (karSnitt > 4.8) skjerm.outln(“Personen kan tas opp”); else skjerm.outln(“Personen kan ikke tas opp”); } else skjerm.outln(“Personen kan ikke tas opp”); }

While-løkker while (logisk uttrykk) { setning 1; setning 2;..... setning n; }

Ferdig program class TreGangen { public static void main (String[] args) { int k=1, svar; while (k <= 10) { svar = k * 3; System.out.println(k + " * 3 = " + svar); k = k + 1; }

for (int i=1; i<=antall; i++) {.... } For-setninger En annen måte å få utført en instruksjon (eller blokk) mange ganger er ved hjelp av en for-setning (også kalt for-løkke): initialisering løkketest løkkeoppdatering

int i = 1 i++ i <= antall ?.... Hvordan for-setningen virker NEI JA avslutt for-løkka

Variabler Hittil har vi sett på variable som kan holde en enkelt verdi: en int -variabel har plass til ett heltall en double -variabel har plass til ett desimaltall en String -variabel har plass til en enkelt tekststreng osv.

Arrayer Arrayer er "variable" som kan holde på mange verdier: en int -array har plass til mange heltall en double -array har plass til mange desimaltall en String -array har plass til mange tekststrenger osv.

Arrayer Verdiene som ligger i en array har hver sin posisjon (= indeks): 0, 1, 2,....., K-1hvor K = lengden til arrayen En array med lengde 4 kan visualiseres slik: I hver av disse boksene er det plass til en verdi

Deklarere og opprette arrayer Deklarasjon: datatype[] arrayNavn; Oppretting: arrayNavn = new datatype[K]; // K er ønsket lengde arrayNavn = new datatype[]{verdi1, verdi2, …, verdiK}; Kombinert: datatype[] arrayNavn = new datatype[K]; datatype[] arrayNavn = {verdi1, …, verdiK}; f.eks. int, double, boolean eller String

Verdiene i en array Anta at vi har deklarert og opprettet følgende array: int[] tlf = new int[600]; For å få tak i de enkelte verdiene i arrayen: tlf[0], tlf[1], tlf[2],..., tlf[599] For å få tak i lengden på arrayen: tlf.length // NB: ingen parenteser til slutt

Flerdimensjonale arrayer Vi kan også deklarere todimensjonale (og høyeredimensjonale) arrayer. Eksempel: int[][] soltimer = new int[12][31]; Resultat: Eksempler på bruk: soltimer[3][4] = 4; int antallKolonner = soltimer[0].length; int antallRader = soltimer.length; (NB: rett opp notater) soltimer

Blokker og metoder En blokk er en samling instruksjoner omgitt av krøllparenteser: { instruksjon 1; instruksjon 2;.... instruksjon n; } Alle steder i et Java-program hvor det kan stå en instruksjon, kan vi om ønskelig i stedet sette inn en blokk

Metoder En metode er essensielt en navngitt blokk med instruksjoner som vi kan få utført hvor som helst i et program ved å angi metodens navn Beskrivelsen av hva metoden skal hete og hvilke instruksjoner som skal ligge i metoden kalles en metode-deklarasjon.

static returverditype metodenavn (parametre) { instruksjon 1; instruksjon 2; … instruksjon n; } Metoder Et navn som du velger Beskrivelse av hva slags input metoden skal ha - gis i form av variabel-deklarasjoner separert av komma Beskrivelse av hva slags output metoden gir, f.eks. void, int, double, char,... Forteller at dette er en "klasse-metode"

typer variable: Klassevariable Variable som er deklarert på klassenivå, utenfor metoden (Også objektvariable)

typer variable: Lokale variable Variable som deklareres inne i en metode Slike variable er definert fra og med der deklarasjonen gjøres og til slutten av blokken de er deklarert i

typer variable: Parametre Variable som deklareres i hodet på metoden Slike variable er definert i hele metodekroppen

Viktig detalj Ved gjentatte kall på en metode er det et nytt sett med lokale variable og parametre som lages hver gang

Metode uten parametre og returverdi static void skrivMeny () { System.out.println(”Lovlige kommandoer: ”); System.out.println(” ”); System.out.println(”1 Registrer ny student”); System.out.println(”2 Søk etter student”); System.out.println(”3 Lag liste”); System.out.println(”4 Avslutt”); System.out.println(” ”); } Følgende metode skriver ut en ordremeny på skjermen: Merk: vi kan hvor som helst i metoden gi instruksjonen return; som avslutter utførelsen av metoden og returnerer eksekveringen til kallstedet

Metode med returverdi static double lesPositivtTall () { In tastatur = new In(); double x; do { System.out.print("Gi et positivt tall: "); x = tastatur.inDouble(); } while (x <= 0); return x; } Merk: vi kan hvor som helst i metoden gi instruksjonen return ; som avslutter utførelsen av metoden og returnerer til kallstedet med verdien til det angitte uttrykket (verdien må være av typen double i dette tilfellet) Følgende metode leser et positivt tall fra terminal og returner det til kallstedet:

Parametre og argumenter class Eksempel { public static void main (String[] args) { minMetode(3.14, 365); } static void minMetode (double x, int y) {..... } Parametre Argumenter Merk: et annet navn for argumenter er aktuelle parametre, og et annet navn for parametre er formelle parametre

Metode med parameter og returverdi static double finnSum (double[] x) { double sum = 0.0; for (int i=0; i<x.length; i++) { sum += x[i]; } return sum; } Følgende metode finner summen av elementene i en double-array:

Overlasting av metoder static int sum (int x, int y) { return x + y; } static double sum (double x, double y) { return x + y; }

Objektorientering - oppsummering Klasser og objekter Hva er klasser og objekter? Pekere og tilgang til objekter Klasse- og objektvariable Konstruktører Beskyttelse Klassene ArrayList og HashMap Filer UML Det aller viktigste

Klasser og objekter Klasser En klasse er en mal/mønster for objekter. Det finnes alltid nøyaktig ett eksemplar av hver klasse når programmet kjøres. Eksempel: class Kjøretøy {... } Objekter Et objekt er en instans laget utifra en klasse. Når programmer startes, finnes ingen objekter (med unntak av systemobjekter). Vi kan lage så mange objekter vi vil. Eksempel Kjøretøy minBil = new Kjøretøy() Objekter som ingen bryr seg om (dvs peker på), blir fjernet automatisk.

Pekere til objekter For å få tilgang til objektene må vi ha pekere: class Stasjon { String navn; int moh; // meter over havet } Stasjon maj, nat; maj = new Stasjon(); nat = new Stasjon();

Tilgang til innmaten i objekter Når vi har en peker til et objekt, kan vi få tilgang til innmaten (dvs data og metoder) med et “.”: nat.navn = "Nationaltheateret"; nat.moh = 4;

Objekt- og klassevariable Variable i en klassedeklarasjon vil forekomme i alle objekter. De er objektvariable. Unntak: Om det står static foran, vil de kun finnes i ett eksemplar, nemlig i klassen. De er klassevariable. Spesielle “variable” (finnes i alle klasser): this betegner objektet selv. null betegner “ingenting”. class Scenic { static int antLaget; String eier; }

Konstruktører Med konstruktører kan man lage objekter som initieres med parametre: Uten en slik konstruktør vil Java sette inn en tom en: class Dato { int dag, måned, år; Dato (int d, m, å) { dag = d; måned = m; år = å; } Dato idag = new Dato(24, 5, 2004); Dato ( ) { }

Beskyttelse Alt i en klasse (og objekt) kan beskyttes: private Elementer er usynlige utenfra. protected Elementer er kun synlig i subklassser. (Omtales ikke i dette kurset.) public Elementer er synlig overalt. ingenting Elementer er synlig i samme pakke. (Omtales ikke i dette kurset.)

Klassen ArrayList Klassen ArrayList fungerer nesten som vanlige array- er. Vi må hente inn klassen fra biblioteket: Objekter opprettes med new : import java.util.ArrayList; import java.util.*; ArrayList a = new ArrayList();

Klassen ArrayList Vi legger inn objekter med metoden add : NB! Vi får bare legge inn i posisjoner som er i bruk, eller én høyere! Vi henter elementer med metoden get : NB! Vi må angi objektets klasse. Antall elementer får man med metoden size : a.add(p); a.add(n, p); p = (MyClass)a.get(n); len = a.size();

Klassen HashMap – java 1.4 Klassen importeres med Objekter opprettes med Elementer legges inn med En nøkkel kan være et vilkårlig object; i INF1000 vil det alltid være en String. Vi henter ut objekter med NB! Vi må angi objektets klasse. import java.util.HashMap; import java.util.*; HashMap map = new HashMap(); map.put(nøkkel, objekt); obj = (MyClass)map.get(nøkkel);

Klassen HashMap – java 1.5 Importere HashMap: Opprette HashMap: Angir hvilken type nøklene og objektene tilhører Legge inn i HashMap: Hente ut fra HashMap: Trenger ikke angi objektets klasse import java.util.HashMap; import java.util.*; map.put(nøkkel, objekt); Myclass m = map.get(nøkkel); HashMap map = new HashMap ();

Løkke gjennom elementer I en array kan man gå gjennom alle elementene med en for- løkke: Det sammen kan man med en ArrayList: Med en HashMap bruker man klassen Iterator: for (int i = 0; i < a.length; ++i)... a[i]... for (int i = 0; i < a.size(); ++i)... a.get(i)... Iterator it = map.keySet().iterator(); while (it.hasNext()) {... (Xxxx)it.next()... }

Java 1.5 Java 1.5 og iterator: Java 1.5 og forløkker: for(Myclass m:map.values()){ … m er her peker til objektet } Iterator it = map.keySet().iterator(); while (it.hasNext()) {... it.next()... }

Pakken easyIO In er en klasse for å lese fra tastatur eller fil. inLine() leser neste linje. inChar() leser neste tegn. endOfFile() sjekker om slutt på filen. inInt leser et heltall. inDouble() leser et flyt-tall. inWord() leser neste ord (omgitt av blanke). inText() leser alle ord igjen på linjen. lastItem() sjekker om flere ord å lese. close() lukker filen. Out er en klasse for skriving til skjerm eller fil. out(... ) skriver ut en tekst (som kan være satt sammen av mange deler med +). outln(... ) er som out men avslutter linjen etterpå. out(x, w) skriver double-tallet x med w desimaler. close() lukker filen.

UML - klassediagrammer Tegnet foran et element angir beskyttelsen: – en private definisjon + en public definisjon # en protected definisjon ~ en pakke-definisjon -saldo +eier +adresse +settinn() Konto

UML – forhold mellom klasser 1 Objekter laget av ulike klasser kan ha et visst forhold til hverandre: Vi kan også angi et mengdeforhold: Lovlige tall er * vilkårlig mange (0, 1, 2,...) 3 nøyaktig , 4, 5 1..* minst 1 (1, 2, 3,...) StudentEksamen -har tatt - StudentEksamen -har tatt - 1 *

UML – forhold mellom klasser 2 Hvordan finner man det riktige tallet? Anta at du står i ett tilfeldig objekt av klassen og ser (langs forbindelsen) på den andre klassen: Hvor mange objekter av det andre klassen ser du da på et gitt tidspunkt? Dette tallet noteres lengst fra deg. Så flytter du deg til den andre klassen og gjentar det hele.

Objektdiagrammer 1 Vi kan også legge inn opplysninger om objektvariablene og deres verdi: Vi kan angi at det finnes mange objekter av samme klasse: petter: Student navn = Per Ås alder = 21 : Student

Objektdiagrammer 2 Pekere Vi kan angi hvilke pekere som peker hvor: Arrayer Vi kan også angi arrayer (med pekere): Tabeller Det finnes et eget UML-symbol for tabeller (HashMap-er).

Pensum V2007 Rett på Java, 2005; Kap 1-9, 12 På nettet: Arne Maus: Informasjonsteknologi, vitenskap og samfunnsmessige virkninger Personopplysningsloven,

Det viktigste Det viktigste vi håper dere har lært i INF1000: Forstå hvordan man programmerer en datamaskin. Forstå hvordan man bygger opp et program med klasser og objekter og kunne illustrere dette med UML-diagram. Kunne skrive enkle programmer i Java. Kunne finne algoritme for å løse enkle problemer og så formulere algoritmen i Java.