OOP Objekt-orienterad programmering



Relevanta dokument
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Tentamen OOP

OOP Omtenta

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen, EDAA20/EDA501 Programmering

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Objektorienterad programmering D2

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OOP Objekt-orienterad programmering

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp

Föreläsning 8: Exempel och problemlösning

Objektorienterad programmering i Java

Saker du ska kunna Föreläsning 13 & 14

TENTAMEN OOP

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

TENTAMEN OOP

TENTAMEN OOP

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 7. Träd och binära sökträd

Grundläggande programmering med C# 7,5 högskolepoäng

Laboration A Objektsamlingar

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

OOP Objekt-orienterad programmering

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Övningar Dag 2 En första klass

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Del A (obligatorisk för alla)

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

DELPROV 1 I DATAVETENSKAP

Del A (obligatorisk för alla)

Tentamen i Objektorienterad programmering

OOP Tentamen

Malmö högskola 2007/2008 Teknik och samhälle

Tommy Färnqvist, IDA, Linköpings universitet

Malmö högskola 2008/2009 CTS

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Föreläsning 10. ADT:er och datastrukturer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 2. Länkad lista och iterator

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Programmering för språkteknologer II, HT2014. Rum

F4. programmeringsteknik och Matlab

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Classes och Interfaces, Objects och References, Initialization

OOP Objekt-orienterad programmering

Föreläsning 3: Booleans, if, switch

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Föreläsning 2. Länkad lista och iterator

Tentamen. Grundläggande programmering i Java A 5p, DTAA

OOP Objekt-orienterad programmering

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

Objektsamlingar i Java

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

OOP Tentamen

SMD 134 Objektorienterad programmering

JAVAUTVECKLING LEKTION 11

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Att använda pekare i. C-kod

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Arrayer. results

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Chapter 4: Writing Classes/ Att skriva egna klasser.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts

Lösningsförslag till tentamen

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 2, vecka 8: Repetition

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Programmering A. Johan Eliasson

Transkript:

OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public static void main(string[]args){ Myra[]allaMyror=new Myra[100]; int antal=0; Myra m = new Myra("Myrre", 43); allamyror[antal] = m; antal++; m = new Myra("Ante", 73); allamyror[antal++] = m; allamyror[antal++] = new Myra(32); Nya myror läggs in sist i arrayen. Om vi vill placera dem på annat ställe? Vad händer när antal blir 100? 1

Få plats med mer OOP F6:3 Vi kan INTE utöka en array. Däremot kan vi skapa en ny array som är större och kopiera över innehållet. if (antal==allamyror.length){ Myra[] tmp = new Myra[antal*2]; for (int x=0; x<allamyror.length; x++) tmp[x]=allamyror[x]; allamyror=tmp; Om vi vill ta bort en Myra? OOP F6:4 System.out.print("Vem skall bort?"); String namn=scan.nextline(); for (int x=0; x<antal; x++) if (allamyror[x].getnamn().equals(namn)){ allamyror[x]=null; break; Vi riskerar att få "hål" i arrayen, kan ge problem: System.out.println("Dessa myror finns:"); for (int x=0; x<antal; x++) System.out.println(allaMyror[x].getNamn()); 2

ArrayList<E> OOP F6:5 En klass som används för att hantera objekt. Har "byggt in" problematiken med storlek och eventuella hål så att programmeraren slipper de problemen. Klass ArrayList ligger i java.util-delbiblioteket. Vid skapande anges vilken sorts objekt som skall hanteras: ArrayList<Myra> allamyror = new ArrayList<Myra>(); Innehåller ett antal metoder som kan anropas: Myra m = new Myra("Myrre", 43); allamyror.add(m); Internt en array som automatiskt utökas vid behov, detta slipper man tänka på som programmerare. Några av metoderna hos ArrayList<E>: OOP F6:6 add(e nytt) add(int index, E nytt) clear() get(int index) isempty() remove(int index) size() Objektet nytt adderas sist i listan Objektet hamnar på plats index Ta bort alla objekt Returnerar objektet på plats index Returnerar true om listan är tom Tar bort objektet på plats index Returnerar antal objekt i listan E är vilken sorts objekt som hanteras: ArrayList<Myra> allamyror = new ArrayList<Myra>(); Här hanteras Myra-objekt. ArrayList<String> namn = new ArrayList<String>(); Här hanterar man textsträngar. 3

public static void main(string[]args){ ArrayList<Myra> allamyror = new ArrayList<Myra>(); OOP F6:7 Myra m = new Myra("Myrre", 37); allamyror.add(m); allamyror.add(new Myra(112)); allamyror.add(new Myra("Ante", 12)); allamyror.add(0, new Myra("Anna")); //Ta bort en myra: System.out.print("Vem skall bort?"); String vem = scan.nextline(); for (int x=0; x<allamyror.size(); x++) if (allamyror.get(x).getnamn().equals(vem)){ allamyror.remove(x); break; //OBS inget "hål" i strukturen Innehållet i en ArrayList är objekt. Fungerar INTE för javas primitiva datatyper. OOP F6:8 FEL: ArrayList<int> talen = new ArrayList<int>(); Till de olika primitiva datatyperna finns Wrappers: int double char boolean Integer Double Character Boolean Wrapper-klasserna finns i java.lang. Innehåller även ett antal metoder, t.ex. parseint ArrayList<Integer> talen = new ArrayList<Integer>(); Sedan Java 5 automatisk konvertering talen.add(17); talen.add(43); int x = talen.get(0); 4

Att skriva ut en Myra OOP F6:9 class Myra{ private String namn; private int barr; //Konstruktorer mm som tidigare public void skriv(){ System.out.println(namn+" har "+barr+" barr"); Kan sedan anropas om man har en Myra-referens Myra m = new Myra(137); m.skriv(); INTE utskrift inuti Myra-klassen utan en metod som returnerar en String med myrans "presentation" OOP F6:10 class Myra{ private String namn; private int barr; //Konstruktorer mm som tidigare public String gettext(){ return namn+" har "+barr+" barr"; Vid anrop kan man sedan göra "vad man vill" med texten Myra m = new Myra(137); System.out.println(m.getText()); JOptionPane.showMessageDialog(null, m.gettext()); 5

Utskrift av en Myra-referens OOP F6:11 Myra m = new Myra("Myrre", 25); System.out.println(m); Borde väl inte fungera??? Jo, utskriften blir (ungefär...): Myra@fef3d Varför? Java-systemet anropar en metod som heter tostring. Varje klass har en sådan metod som default skriver som ovan. Denna metod kan göras om: I Myra: public String tostring(){ return namn+" har "+barr+" barr"; Utskriften blir nu: Myrre har 25 barr Metoden som returnerar en Myras presentation döps till tostring OOP F6:12 class Myra{ private String namn; private int barr; //Konstruktorer mm som tidigare public String tostring(){ return namn+" har "+barr+" barr"; tostring blir automatiskt anropad Myra m = new Myra(137); System.out.println(m); JOptionPane.showMessageDialog(null, m); 6

Utskrift av alla Myror i en ArrayList<Myra> OOP F6:13 for (int x=0; x<allamyror.size(); x++) System.out.println(allaMyror.get(x)); Med alternativ for-loop for (Myra m : allamyror) System.out.println(m); ArrayList har en egen tostring-metod System.out.println(allaMyror); this OOP F6:14 Man kan få en referens till sig själv med this. Anta att två myror skall kunna gifta sig med varandra. Vi lägger till attributet partner i class Myra samt en metod giftersig: class Myra{ private Myra partner = null; public boolean giftersig(myra m){ if (m!=null && partner==null && m.partner==null && m!=this){ partner = m; m.partner = this; return true; return false; 7

Ett kommandostyrt program: OOP F6:15 public static void main(string[]args){ ArrayList<Myra> myrstack=new ArrayList<Myra>(); Scanner sc=new Scanner(System.in); for(;;){ System.out.print("1-Skapa myra\n2-ändra barr\n"+ "3-Giftemål\n4-Skriv ut alla\n"+ "5-Avsluta\nAnge Kommando: "); int kom=integer.parseint(sc.nextline()); switch (kom){ case 1: //Koden för att skapa en myra break; case 2: //Koden för att ändra antal barr break; case 3: break; case 4: break; case 5: System.exit(0); default: System.out.println("Felaktigt kommando"); //switch //for //main //Skapa en Myra: OOP F6:16 System.out.print("Myrans namn: "); String namn=sc.nextline(); System.out.print("Antal barr: "); int antbarr=integer.parseint(sc.nextline()); Myra ny = new Myra(namn, antbarr); myrstack.add(ny); //Ändra en Myra's antal barr: System.out.print("Vilken Myra: "); String namn=sc.nextline(); Myra vem=null; for (Myra m : myrstack) if (m.getnamn().equals(namn)) vem=m; if (vem!=null){ System.out.print("Antal nya barr: "); int x=integer.parseint(sc.nextline()); vem.changebarr(x); else System.out.println("Den Myran fanns ej i stacken."); 8