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

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC76 Programmering och datastrukturer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

Objektorienterad Programmering (TDDC77)

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

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

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

DAT043 - Föreläsning 7

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

Laboration 1 - Grunderna för OOP i Java

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

Konstruktion av klasser med klasser

Objektorienterad Programmering (TDDC77)

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

Objektorienterad Programmering (TDDC77)

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Föreläsning 9: Arv och UML

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

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

Instuderingsuppgifter läsvecka 2

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Imperativ programmering. Föreläsning 4

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

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

Klasshierarkier - repetition

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

TENTAMEN OOP

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

Föreläsning 15: Repetition DVGA02

Classes och Interfaces, Objects och References, Initialization

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Lösningsförslag övning 2.

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Föreläsning 13 Innehåll

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Lösningar för tenta 2 DAT043,

OOP Objekt-orienterad programmering

Arv. Objektorienterad och komponentbaserad programmering

Föreläsning 5. Föreläsning 5

OOP Objekt-orienterad programmering

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

TENTAMEN OOP

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

JAVAUTVECKLING LEKTION 11

TDDC Terminologi Uppdaterad Fö #1

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

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TUTORIAL: KLASSER & OBJEKT

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Malmö högskola 2008/2009 CTS

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Objektorienterad Programmering DAT043

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

Föreläsning 7: Objektorienterad programmering - introduktion

Transkript:

TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut Synlighet Arv och polymorfism Unified Modelling Language 1

Hitta felet! public class Human { int age; public void printage() { System.out.println("Jag är " + age + " år gammal"); public static void main(string[] args) { Human lisa; lisa.printage(); Ett objekt måste instantieras innan det kan användas. 2

Hitta felet! public class Human { int age; public void printage() { System.out.println("Jag är " + age + " år gammal"); public static void main(string[] args) { Human lisa = new Human(); lisa.printage(); Instansvariabler måste tilldelas ett värde innan de används. 3

Konstruktorer Används för att initiera ett objekt Kan finnas flera konstruktorer Kan även helt sakna konstruktorer (En tom defaultkonstruktor skapas av kompilatorn) public class Human { int age; // This is the constructor Defaultkonstruktorn: public Human(int age) { public Human() { this.age = age; public void printage() { System.out.println("Jag är " + age + " år gammal"); public static void main(string[] args) { Human lisa = new Human(21); lisa.printage(); 4

Statiska metoder & attribut Hitta felet! public class Human { int age = 0; static int sum(int a, int b) { return a + b; static void increaseage(int addition) { age = age + addition; public static void main(string[] args) { int x = Human.sum(1, 9); Human lisa = new Human(); lisa.increaseage(1); Statiska metoder kommer inte åt instansvariabler. 5

Statiska metoder & attribut Instansmetoder kommer åt både klass- och instansvariabler Klassmetoder kommer endast åt klassvariabler static Klassmetoder Klassvariabler Klass En instansvariabel hör till en specifik instans En klassvariabel delas mellan alla instanser Dessutom: Beskrivs av Instansmetoder Objekt Instantierar Man behöver (bör) inte gå via en instans för att komma åt en klassmetod/klassvariabel Instansvariabler 6

Synlighet Dölj implementationen, visa upp ett gränssnitt. Tumregel: Visa upp så lite som möjligt Javas synlighetsmodifierare: public synlig för alla protected - synlig inom paketet och subklasser [inget] (package private) synlig inom paketet private - endast synlig inom klassen 7

Synlighet(2) Dölj implementationen, visa upp ett gränssnitt. God sed och vana: Klasser som regel public En del klasser som endast ska användas internt kan ha minskad synlighet Interna hjälpmetoder private Övriga metoder public Attribut - private Möjligtvis protected om motiverat 8

Synlighet(3) Exempel: god programmeringssed public class Car { private String model; public void setmodel(string newmodel) { model = newmodel; public String getmodel() { return model; Använd getters och setters för att komma åt medlemsvariabler utanför klassen. 9

Arv Möt tre studenter Gymnasiestudenten Anna Högskolestudenten Harry Impulsive Ivar Gillar att lösa problem med penna och papper Har just läst TDDC30 Gillar att lösa problem med en väl skriven programmeringsalgoritm Har just fyllt nio Gillar huvudbonader och att gå ut på rast 10

Arv(2) Alla studenter bör kunna studera och lösa uppgifter Men den perfekte studenten är ett abstrakt koncept.. public abstract class Student { public void study() { System.out.println("I am studying very hard."); // this method has to be implemented by concrete // students public abstract String solveproblem(string problem); 11

Arv(3) Anna är en Student som gillar att lösa problem med penna och papper public class HighSchoolStudent extends Student { // I am overriding solveproblem with my implementation public String solveproblem(string problem) { System.out.println( Solving with pen & paper. ); return The answer is 84 / 2 ; 12

Arv(4) Harry är en Student som gillar att lösa problem med en väl skriven programmeringsalgoritm public class CollegeStudent extends Student { // I am overriding solveproblem with my implementation public String solveproblem(string problem) { System.out.println( Solving with Java. ); return The answer is + (84 / 2); 13

Arv(5) Ivar är en Student som just fyllt nio.. public class YoungStudent extends Student { //This is an override of the already implemented method in // Student! public void study() { System.out.println( *Puts book on head* ); // I am overriding solveproblem with my implementation public String solveproblem(string problem) { System.out.println( No! ); return null; 14

Arv(6) Några termer: Superklass, Basklass Subklass, härledd klass (en. Derived class) Överskugga (en. Override) "Föräldraklassen" En klass som ärver från en superklass Implementera eller ersätt en metod från en superklass (eller ett interface) HighSchoolStudent, CollegeStudent och YoungStudent ärver ifrån Student Samtliga (ej abstrakta) subklasser till Student måste implementera den abstrakta metoden solveproblem() Subklasser till Student får överskugga study() 15 Förbjuda subklassning och överskuggning? Använd final

Object Alla klasser ärver automatiskt från Object, direkt eller indirekt Visar på att arv i flera led är möjligt Några metoder som finns i klassen Object boolean equals(object other) Object clone() String tostring() void finalize() Dessa metoder behöver ofta överskuggas 16

UML Unified Modelling Language Ett grafiskt språk för att beskriva objektorienterade system i alla steg i programvarutvecklingen De-fakto industristandard idag I den här kursen koncentrerar vi oss på klassdiagram 17

UML Beskrivning av en klass + public - private # protected ~ package private understruken static Italic abstrakt / derived Klassnamn Attribut Metoder 18

UML Beskrivning av relationer mellan klasser Association Har en referens till Aggregation - äger en OBS vag definition inom Java, undvik att använda Komposition A består av B Generalisering (arv) A ärver från B A kan användas som en B Realisering (interface) Beroende Multiplicitet exempel: A har minst en referens till B 19

UML Exempel: UML-beskrivning av Studentklasserna 20

Polymorfism poly-morf (grek.) = många former public class PolyMorphExample { public static void morphschool(student student) { student.study(); student.solveproblem( What is the matrix ); Kan vara vilken subklass som helst Dröjer tills körningsögonblicket innan det bestäms Endast det som är deklarerat i Student är tillgängligt public static void main(string[] args) { HighSchoolStudent anna = new HighSchoolStudent(); PolyMorphExample.morphSchool(anna); 21