Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

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

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

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

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

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

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

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

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

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

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

TENTAMEN OOP

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

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

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

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.

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

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

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

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

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

Support Manual HoistLocatel Electronic Locks

Arv. Objektorienterad och komponentbaserad programmering

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

Klasshierarkier - repetition

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

Objektsamlingar i Java

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Classes och Interfaces, Objects och References, Initialization

Modeller, Objekt och Klasser

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

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

DAT043 - Föreläsning 7

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

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

endast har ett korrekt alternativ. Om

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

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

Föreläsning 9: Arv och UML

tentaplugg.nu av studenter för studenter

Tentamen Programmering fortsättningskurs DIT950

Objektorienterad Programmering (TDDC77)

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

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

Lösningsförslag övning 2.

Designmönster/Design patterns

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

TDDD78 Viktiga begrepp, del 2

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

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

Lektion Händelsehanterare

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

TENTAMEN OOP

Länkade strukturer. (del 2)

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

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

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Arv Murach s: kap 14

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Tentamen FYTA11 Javaprogrammering

TDDC76 - Programmering och Datastrukturer

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

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

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

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

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

OOP Tenta

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

12.6 Heat equation, Wave equation

Konstruktion av klasser med klasser

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

tentaplugg.nu av studenter för studenter

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

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

Föreläsning 3. Stack

Föreläsning 3. Stack

Testramverk och Model based testing med java i praktiken

Lösningsförslag till exempeltenta 2

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Recitation 4. 2-D arrays. Exceptions

Föreläsning 12. Länkade listor

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

TENTAMEN OOP

Transkript:

Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat sätt Har ett koncist och sammanhängande gränssnitt 417 Vad kännetecknar en god klass I dagsläget kan vi ha följande samband mellan klasser, tillhör samma paket eller arv Har tillstånd och beteende Representerar en mängd möjliga run-time objekt Problemet ska delas upp i lämpliga klasser Cohesion och Coupling (sammanhörighet och koppling) Metoderna i varje klass ska ha stark sammanhörighet Klasserna ska vara löst kopplade (oberoende av varann) SomeClass SomeChild Class ClassA ClassB ClassC 418 Organisera klasser inuti varandra/nested Classes A static inner class is a nested class which is a static member of the outer class. Works as top-level classes just like package Inner classes are a security mechanism in Java. An inner class can be made private, protected, public. A class within a method and this will be a local type. An inner class declared without a class name is known as an anonymous inner class. public class ShortTest public int aval; protected int bval; private int cval; static public class Inside public void demo() int a = aval; a = bval; c = cval;

ShortTest.Inside s = new ShortTest.Inside(); Varför Nested Static classes? Fungerar ju som vanliga paket, dvs klasserna ligger ju var för sig. Om man vill ha en uppbyggnad där klasserna ligger mer inuti varandra Hur gör man då? Varför vill man ha det så? Jan Erik Moström Inner classes Klassen existerar i objekten som tillhör en annan klass Varför??? Adaptor Tre varianter Member inner Local inner Anonymous inner Abstrakta klasser som implementerar alla metoder i ett interface men tomma MetodA(Type param) Tex MouseAdapter... men trassla inte till saker i onödan public class ShortTest public int aval; protected int bval; private int cval; public class Inside public void demo() int a = aval; a = bval; a = cval; OK ShortTest st = new ShortTest(); ShortTest.Inside s = st.new Inside();

Skuggning av namn När vi har två hierarkier Inneslutning Arv class Outer extends Parent void setx( int value) x=value; public class Parent 0 i.setx(50); class Outer extends Parent void setx( int value) this.x=value; 0 i.setx(50); public class Parent class Outer extends Parent void setx( int value ) Outer.this.x = value; 50 public class Parent i.setx(50); Anonyma klasser Har inget namn!!! En-gångs klasser Implementerar ofta ett enkelt interface new public void somemethod() // bla bla new SomeExistingClassInterface() public void somemethod() // bla bla

Ingen konstruktor public Coordinates getcoord() final int methodval = 0; return new Coordinates() private int xval; private int yval; public int xcoordinate() return xval; public int ycoordinate() return yval; public String tostring() return x = + xval + y = + yval + methodval; ; public Coordinates getcoord() final int methodval = 0; return new Coordinates() private int xval; private int yval; ; public int xcoordinate() return xval; public int ycoordinate() return yval; public String tostring() return "x = " + xval + " y = " + yval + methodval; xval = 100; yval = 120; Lokala klasser public class Top class Minor int val; public void somemethod () class SomeClass Organisera klasser inuti varandra A static inner class is a nested class which is a static member of the outer class. It can be accessed without instantiating the outer class, using other static members. Just like static members, a static nested class does not have access to the instance variables and methods of the outer class. Inner classes are a security mechanism in Java. We know a class cannot be associated with the access modifier private, but if we have the class as a member of other class, then the inner class can be made private. In Java, we can write a class within a method and this will be a local type. Like local variables, the scope of the inner class is restricted within the method. A method-local inner class can be instantiated only within the method where the inner class is defined An inner class declared without a class name is known as an anonymous inner class. In case of anonymous inner classes, we declare and instantiate them at the same time. Generally they are used whenever you need to override the method of a class or an interface. It is an expression. När ska man använda För att organisera koden för ökad läsbarhet. Tips Använd lokala klasser bara för små enkla klasser då koden annars blir väldigt svårläst Ökad läsbarhet, ökad inkapsling, ökad säkerhet genom privata klassers Ökad inkapsling och ökad säkerhet, minskad läsbarhet För att implementera CallBacks och adaptrar i Java

Bra länkar http://www.tutorialspoint.com/java/java_innerclasses.htm innerclasses.html anonymousclasses.html localclasses.html http://skillgun.com/java/misc/interview-questions-andanswers/paper/180 440