INF Objektorientert programmering

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.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
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.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
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.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
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.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
En gang til!? .
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert programmering
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 11 Programmering med og uten objekter: hva er forskjellen?
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Å 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.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
02 - Java datatyper Grundlæggende om datatyper og variable.
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.
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.
Indledende Datalogi /kelk 1 Need to know Løkker Klasser, instanser og Objekter Hvorfor objektorientering? Scope – hvor erklæres en variabel? ”Access Modifiers”
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.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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.
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
Klassevariabler- og metoder Funktionalitet på klasseniveau.
Repetisjon INF 1000 – våren 2007 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Anne Landro, Are Magnus Bruaset og Arild Waaler.
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
BilSalg klassedatastruktur Bil klassedatastruktur
BilSalg klassedatastruktur Bil klassedatastruktur
Utskrift av presentasjonen:

INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre

INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere Andreas Færøvig Olsen (andrefol) Henrik Hillestad Løvold (henrihlo) 12 gruppelærere 22 obligrettere

Undervisningstilbud 2 timer forelesninger pr. uke 2 timer plenumsøvelser pr. uke 2 timer seminarundervisning pr. uke Labundervisning en-til-en, tilbakemelding og godkjenning av obliger ca. 8 obliger 2 poeng pr. uke Første oblig frist onsdag 4. februar kl. 10.00 Andre oblig frist 11. februar kl. 10.00 Vi kan opprette labgrupper etter behov

Variabler primitive typer arrayer pekervariable Alle variabler har en type et navn et innhold

Metoder Må enten ha en returtype eller være void returtypen kan være alle typer som en variabel kan ha, også array. eller være void har 0, 1 eller flere parametre

Metoder og variable er byggesteinene våre i tillegg til klasser og konstruktører. Vi skiller mellom klassevariabler og klassemetoder objektvariabler og objektmetoder

Et javaprogram som kjøres oppretter objekter og endrer på innholdet i klasse- og objektvariabler ved å utføre konstruktører og metoder. Variabler endrer innhold med tilordninger.

class Hund { private String navn ; private int vekt = 5000; private Hund mor = null; Hund ( String n ) { navn = n; } Hund ( String n, int v ) { vekt = v; public void settVekt ( int v ) {

class Eks01 { public static void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); Hund pluto = new Hund("Pluto", 6750); }

class Heltall { int tall; Heltall(int t) {tall = t;} } class Eks02 { public static void main ( String[] a ) { int a=0, b=7; Heltall refa, refb; refa = new Heltall(0); refb = new Heltall(7); a = b; refa = refb; b = 8; refb.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", refb.tall=" + refb.tall);

public static void main (String[] argumenter) { int a=0, b=7; Heltall refa, refb; refa = new Heltall(0); refb = new Heltall(7); a = b; refa = refb; b = 8; refb.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", refb.tall=" + refb.tall); }

public static void main (String[] argumenter) { int a=0, b=7; Heltall refa, refb; refa = new Heltall(0); refb = new Heltall(7); a = b; refa = refb; b = 8; refb.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", refb.tall=" + refb.tall); }

Tilordninger primitive variabler <venstreside> = <høyreside> Hva gjør javamaskinen når programmet utføres? 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

Tilordninger primitive variabler <venstreside> = <høyreside> int tall = 2 * 5 + 3; tall = 47 % 7; double rotenAv2 = java.lang.Math.sqrt(2.0); 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

Tilordninger pekervariabler <venstreside> = <høyreside> Hund lassie = new Hund(“Lassie”); Hund minHund = lassie; minHund = finnHundMedNavn(“Lassie”); minHund = null; 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

Tilbake til hundeeksemplet class Hund { …… } class Eks01 { static int antallHunder = 0; public static void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); ++antallHunder; Hund pluto = new Hund("Pluto", 6750); }

class Eks01 { static int antallHunder = 0; public static void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); ++antallHunder; Hund pluto = new Hund("Pluto", 6750); } Klassedatastruktur:

class Hundebur { private Hund hundIBur = null; public void settInnHund( Hund h ) { if (hundIBur == null) hundIBur = h; else System.out.println("Hundeburet er fullt!"); } public Hund taUtHund() { Hund somSlipperUt = null; if (hundIBur == null) System.out.println("Hundeburet er tomt!"); else { somSlipperUt = hundIBur; hundIBur = null; return somSlipperUt;

class Hundebur { private Hund hundIBur = null; public void settInnHund( Hund h ) { } public Hund taUtHund() { return somSlipperUt; }

class Eks01 { static int antallHunder = 0; public static void main (String[] argumenter) { Hund pluto = new Hund("Pluto", 6750); ++antallHunder; Hundebur hundeburet = new Hundebur(); hundeburet.settInnHund(new Hund("Cara")); hundeburet.settInnHund(pluto); Hundebur burNr2 = new Hundebur(); burNr2.settInnHund(pluto); }

class Katt { private String navn ; private int vekt = 3750; private Katt mor = null; Katt ( String n, Katt mor ) { navn = n; this.mor = mor; } Katt ( String n, int v ) { vekt = v; public void settVekt ( int v ) {

Kan katter settes i hundebur? Utvider main-metoden: ….. Hundebur burNr2 = new Hundebur(); burNr2.settInnHund(pluto); Katt pus = new Katt("Pus", 5600 ); Katt tom = new Katt("Tom", pus ); burNr2.settInnHund(tom); Resultat fra kompilering: Eks04.java:75: settInnHund(Hund) in Hundebur cannot be applied to (Katt) ^

Kan vi lage bur som både hunder og katter kan bo i ? class Bur { private ???? dyrIBur = null; public void settInn( ???? h ) { if (dyrIBur == null) dyrIBur = h; else System.out.println("Buret er fullt!"); } public ???? taUt() { ???? somSlipperUt = null; if (dyrIBur == null) System.out.println("Buret er tomt!"); else { somSlipperUt = dyrIBur; dyrIBur = null; return somSlipperUt;

class Bur<Dyr> { private Dyr dyrIBur = null; public void settInn( Dyr h ) { if (dyrIBur == null) dyrIBur = h; else System.out.println("Buret er fullt!"); } public Dyr taUt() { Dyr somSlipperUt = null; if (dyrIBur == null) System.out.println("Buret er tomt!"); else { somSlipperUt = dyrIBur; dyrIBur = null; return somSlipperUt;

class Bur<T> { private T dyrIBur = null; public void settInn( T h ) { if (dyrIBur == null) dyrIBur = h; else System.out.println("Buret er fullt!"); } public T taUt() { T somSlipperUt = null; if (dyrIBur == null) System.out.println("Buret er tomt!"); else { somSlipperUt = dyrIBur; dyrIBur = null; return somSlipperUt;

public static void main ( String[] argumenter) { Bur<Hund> hundeburet = new Bur<Hund>(); hundeburet.settInn( new Hund("Cara") ); Bur<Katt> katteburet = new Bur<Katt>(); Katt pus = new Katt( "Pus", 5600 ); Katt tom = new Katt( "Tom", pus ); katteburet.settInn(tom); Hund h = hundeburet.taUt(); }

I dette buret kan vi sette inn objekter av alle klasser: Bur<Bil> garasje = new Bur<Bil>(); Bur<Person> hybel= new Bur<Person>(); Ja, vi kan også lage et bur med et kattebur i: Bur<Bur<Katt>> bur = new Bur<Bur<Katt>>();

Men har vi ikke sett dette før ? ArrayList<Katt> katteliste = new ArrayList<Katt>(); public class ArrayList<E> { …. Predefinert klasse som vi har brukt …}

HashMap<String, Hund> hunderegister = new HashMap<String, Hund> ()