Repetition av OOP- och Javabegrepp

Relevanta dokument
Repetition av OOP- och Javabegrepp

Tvådimensionella fält

Föreläsning 8 Flerdimensionella fält ArrayList enum switch-satsen

Föreläsning 8. Föreläsning 8 Flerdimensionella fält ArrayList enum. Flerdimensionella. ArrayList enum switch-satsen. switch-satsen

Föreläsning 8. Föreläsning 8 Flerdimensionella fält ArrayList enum. Flerdimensionella. ArrayList enum switch-satsen. switch-satsen

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

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Arrayer. results

OOP Objekt-orienterad programmering

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

DAT043 - föreläsning 8

Tommy Färnqvist, IDA, Linköpings universitet

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Föreläsning 8. Föreläsning 8 Textfiler Flerdimensionella fält ArrayList enum switch-satsen

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Arrayer (fält)

Länkade strukturer. (del 2)

Föreläsning 8. Föreläsning 8

Samlingar Collection classes

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

Föreläsning 2 Innehåll

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning REPETITION & EXTENTA

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

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

Föreläsning 2 Innehåll. Generiska klasser. Generik i Java. Varför generiska klasser Bakgrund

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Flerdimensionella fält och textfiler

Objektorienterad programmering

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Föreläsning 4 Innehåll

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

DAT043 - Föreläsning 7

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad programmering i Java

Länkade strukturer, parametriserade typer och undantag

I ett program hantera man ofta samlingar av objekt av samma typ.

Sammansatta datatyper Generics: Parametrisk polymorfism

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

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

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList<E> Exempel på vad du ska kunna

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Laboration A Objektsamlingar

Classes och Interfaces, Objects och References, Initialization

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsning 6. Fält. Fält Klassen String. Fält

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Tentamen OOP

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

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

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Objektorienterad Programmering (TDDC77)

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

Den som bara har en hammare tror att alla problem är spikar

Föreläsning 7. Fält Klassen String

Samlingar Collection classes

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

F3 Klasser och objekt. ID1004 Objektorienterad programmering Fredrik Kilander

public class BoundedCounter {

Objektorienterad programmering

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Lösningar för tenta 2 DAT043,

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 13 Innehåll

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

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

Del A (obligatorisk för alla)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Objektorienterad programmering D2

Föreläsning 7. Flerdimensionella fält ArrayList. Flerdimensionella. ArrayList. In- och utmatning av data

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

Fält och klassen String

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Transkript:

ArrayList<E> Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir full Inga tomma platser, tar vi bort ett element så fyller de andra upp Annorlunda syntax Enklare användning (färdiga metoder för vanliga operationer) Kan inte lagra primitiva typer 2 ArrayList Ett fält är en statisk datastruktur, vilket innebär att storleken måste anges när fältet skapas. Fält är alltså inte anpassade för att lagra dynamiska datasamlingar som under sin livstid kan variera i storlek. För att lagra dynamiska datasamlingar i ett fält måste man själv utveckla programkod för att t.ex.: - ta bort ett element ur fältet - lägga in ett nytt element på en given position i fältet - öka storleken på fältet om ett nytt element inte ryms. Klassen ArrayList är en standardklass (av flera) för all lagra samlingar av objekt. ArrayList lämpar sig bättre för dynamiska datasamlingar än endimensionella fält. ArrayList finns i paketet java.util. Klassen ArrayList<E> Metod Beskrivning ArrayList<E>() skapar en tom ArrayList för element av typen E. void add(e elem) void add(int pos, E elem) E get(int pos) E set(int pos, E elem) E remove(int pos) lägger in elem sist i listan (d.v.s. efter de element som redan finns i listan). lägger in elem på plats pos. Efterföljande element flyttas ett position framåt i listan. returnerar elementet på plats pos. ersätter elementet på plats pos med elem, returnerar elementet som fanns på platsen pos. tar bort elementet på plats pos, returnerar det borttagna elementet. Efterföljande element i listan flyttas en position bakåt i listan. 3 4

Klassen ArrayList<E> Metod Beskrivning int size() returnerar antalet element i listan boolean isempty() returnerar true om listan är tom, annars returneras false int indexof(e elem) returnerar index för elementet elem om detta finns i listan, annars returneras -1 boolean cointains(object elem) returnerar true om elem finns i listan, annars returneras false void clear() tar bort alla elementen i listan String tostring() returnerar en textrepresentation på formen [e1, e2,..., en] Anm: Metoderna indexof och contains förutsätter att objekten i listan kan jämföras, d.v.s. klassen som objekten tillhör måste definiera metoden public boolean equals(object obj) Alla standardklasser, såsom String, Integer och Double, definierar metoden equals. 5 Autoboxing och auto-unboxing Typomvandling sker automatiskt mellan primitiva datatyper och motsvarande omslagsklasser. Detta kallas för autoboxing respektive auto-unboxing. Istället för att skriva Integer talobjekt = new Integer(10);... int tal = talobjekt.tovalue(); kan man skriva Integer talobjekt = 10;... int tal = talobjekt; // autoboxing // auto-unboxing 7

Uppräkningstyper - enum Varje deklarerat (uppräknat) värde i en uppräkningstyp är en instans av klassen. Varje värde är implicit public, static och final, alltså en klasskonstant. Metod Beskrivning int compareto(e o) returnerar ett negativt heltal om aktuellt objekt är mindre än argumentet o, 0 om aktuellt objekt och argumentet o är lika och ett positivt heltal om aktuellt objekt är större än argumentet o. Jämförelsen görs enligt den ordning objekten har deklarerats. boolean equals(e o) returnerar true om o är lika med aktuellt objekt, annars returneras false String name() returnerar namnet på aktuellt objekt (enligt deklarationen) I int ordinal() returnerar ordningstalet för aktuellt objekt (enligt deklarationen) String tostring) returnerar namnet på aktuellt objekt (enligt deklarationen) static E valueof(string str) returnerar objektet med det angivna namnet static E[] values() returnerar ett fält innehållande objekten i klassen 13 Lägga till beteenden på enum-konstanter public public enum enum DayOfWeek DayOfWeek {{ MONDAY, MONDAY, TUESDAY, TUESDAY, WEDNESDAY, WEDNESDAY, THURSDAY, THURSDAY, FRIDAY, FRIDAY, SATURDAY, SATURDAY, SUNDAY; SUNDAY; public public int int nrinweek() nrinweek() {{ return return this.ordinal() this.ordinal() ++ 1; 1; }} public public DayOfWeek DayOfWeek tomorrow() tomorrow() {{ DayOfWeek[] DayOfWeek[] days days == DayOfWeek.values(); DayOfWeek.values(); return return days[(this.ordinal() days[(this.ordinal() ++ 1) 1) % % days.length]; days.length]; }} public public DayOfWeek DayOfWeek yesterday() yesterday() {{ DayOfWeek[] DayOfWeek[] days days == DayOfWeek.values(); DayOfWeek.values(); return return days[(this.ordinal() days[(this.ordinal() -- 1) 1) % % days.length]; days.length]; }} public public static static DayOfWeek DayOfWeek getdaywithnr(int getdaywithnr(int daynr) daynr) {{ DayOfWeek[] DayOfWeek[] days days == DayOfWeek.values(); DayOfWeek.values(); return return days[daynr days[daynr -- 1]; 1]; }} }} Returnerar vilket ordningsnummer i veckan Den aktuell dagen har Returnerar dagen efter aktuell dag Returnerar dagen före aktuell dag Returnerar dagen med ordningsnummer daynr i veckan 15

Implementationsarv: Abstrakta klasser och metoder Vi kan ha en samlingsklass (ex. GeometricObject), som ärvs av flera subklasser (ex. Rectangle, Circle). Om vi låter GeometricObject vara en vanlig klass, som vi gjorde med Bicycle, så går det att skapa instanser av den. Det vill vi dock inte tgillåta, då GeometricObject inte är en faktisk geometrisk form. Lösningen kan då vara att göra den till en abstrakt klass. Man kan då inte skapa instanser av den, men den kan fortfarande innehålla vissa gemensamma egenskaper och den kan fortfarande ärvas. 26 Specifikationsarv: Interface (gränssnitt) I Java kan en klass endast ärva från (göra extends på) en klass. I Java åstadkoms multipelt arv via specifikationsarv m.h.a. av interface. Ett interface saknar implementation, d.v.s. alla metoder som specificeras är abstrakta. En metod som ärver från ett interface implementerar metoderna som interfacet specificerar. En klass kan implementera flera interface. Varje interface introducerar en ny typ, med samma namn som interfacet. Varje klass som implementerar ett interface är en subtyp till typen för interfacet. Klasser och interface bildar en typhierarki. 28

Vad är exceptions? Ett exception (undantag) är ett objekt som representerar ett fel. Undantatg kan deklareras, skapas, kastas, fångas och hanteras. Många standardmetoder skapar och kastar undantag om något fel inträffar. Det finns olika undantagsklasser, exempelvis: NullPointerException NumberFormatException ArrayIndexOutOfBoundsException API:n beskriver vilka undantag en metod kan kasta. 33 Vad används undantag till? Hantera fel som kan uppstå under körning (runtime). Användaren slipper se en krasch. Vi kan försöka lösa problemet. I värsta fall: användaren får ett fint avsked. Undvika att programmet kraschar. Kan delegera ansvaret för att hantera felet felet måste inte hanteras där det uppstod. 35