Abstrakte klasser og interfaces i Java

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
07 – Kort om OO Introduktion.
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
Distribueret programmering, specielt Web Services Rasmus D. Lehrmann DM
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
13 – Database med JDBC. 2 NOEA2009Java-kursus – JDBC JDBC JDBC er et standard bibliotek til at tilgå relational databaser API’et er en standardiseret.
Arkitektur Embedded SQL Tema Persistens
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
Effective Java items Orange gruppe Thuy, Janne, Mads T.P., Oliver og Sebastian.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
1 Nedarvning. 2 Plan Overlæsning af metoder og konstruktører Nedarvning fra klasser Implementering af grænseflader Retningslinjer for design af klasser.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.
Selve objektet versus referencen til objektet Nedarvning
Database Normalization without Mathmatics
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
14 - JavaBeans. 2 NOEA2009Java-kursus – JavaBeans Content What is a Java Bean? BDK What makes Bean possible? Support for Java Bean References.
09 – Arv og polymorfi i java
Hvordan man skriver koden.
WCF service Hostet på website x. Opret tomt web applikations projekt.
Distribution af funktionalitet Webservice med WCF x.
Distribution af funktionalitet Webservice med WCF x.
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
Programering af mobile enheder Windows Phone Storage.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
MEC, DAIMIIntroJava AAU1 Crayon-objekter nu med loops og metoder.
Forelæsning 3.1 Collections Javas for-each løkke
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Globaliseringsredegørelse 21.mar. 11 Globaliseringsredegørelsen 2011 Grafer fra temakapitlet Eksporten som drivkraft for vækst og velstand.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Klasser og objekter (Afsnit i manualen).
Præsentationens transcript:

Abstrakte klasser og interfaces i Java

Indhold Hvad er en abstrakt metode og en abstrakt klasse? Hvad er et interface? Hvorfor bruge interface? Interface som en type Interface vs. Class Oprette et interface Implementere et interface Implementere flere interface's Arv med interface's Interface og polymorfi Overskriv et interface

Abstrakte Metoder public abstract void someMethod(); Metoder, der ikke er implementeret (har en body) For at oprette en abstrakt metode tilføjes abstract og {…} udelades. Der afsluttes med ; public abstract void someMethod();

Abstrakt klasse En abstract klasse er en klasse har en eller flere abstrakte metoder. Den erklæres med abstract modifier En abstrakt klasse kan ikke instanseres Man kan altså ikke bruge new på en abstrakt klasse En anden klasse er nødt til at arve fra den abstrakte klasse og implementere metoden

Sample Abstract Class public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); public abstract void walk(); public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); }

When to use Abstract Methods & Abstract Class? Abstrakte metoder bruges når det ikke giver mening at implementere den i superklassen. F.eks area i shape. Samtidigt er det stadig muligt at genbruge en del af koden

Hvad er et Interface? Det er standardliseret og public måde at beskrive en klasses adfærd, dvs. klassens public medlemmer, altså klassens interface Interface definerer en kontrakt Alle metoder i et interface er abstrakte metoder En konkret klasse skal implementere interfacet, dvs. alle de abstrakte metoder. Interface giver klasser mulighed for at implementere fælles adfærd uanset placering i klasse hierakiet. Og synliggør det for andre klasser.

Eksempel: Interface Relation public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }

Eksempel 2: OperatorCar Interface public interface OperateCar { // constant declarations, if any // method signatures int turn(Direction direction, double radius, double startSpeed, double endSpeed); int changeLanes(Direction direction, double startSpeed, double endSpeed); int signalTurn(Direction direction, boolean signalOn); int getRadarFront(double distanceToCar, double speedOfCar); int getRadarRear(double distanceToCar, double speedOfCar); ...... // more method signatures }

Hvorfor bruge interfaces? At synliggøre (en del af) en klasses interface uden at gøreimplementation synlig. Dvs. det understøtter indkabsling Implementationen kan ændres uden at involvere den der kalder interfacets metoder Brugeren behøver ikke at den implementerende klasse på kompileringstidspunktet Den behøver kun at kende interfacet på kompileringstidspunktet Det er først på runtime at den aktuelle objekt instans bliver knyttet sammen med interfacet

Hvorfor bruge interfaces? Klasser, der ikke hører sammen kan have samme adfærd / metoder uden at den ene arver fra den anden Eksempel: Klassen Line og klassen MyInteger De er ikke relatereret gennem arv Men de kan implementere samme interface checkIsGreater(Object x, Object y) checkIsLess(Object x, Object y) checkIsEqual(Object x, Object y) Derved kan det f.eks være muligt at sortere dem

Hvorfor bruge interfaces? Modellere mutibel arv. En klasse kan implementere flere interfaces, men kun arve fra en klasse

Interface vs. abstrakt klasse Alle metoder i et interface er abstrakte, men at ikke alle metoder i en abstrakt klasse behøver at være abstrakte. Et interface kan kun definere konstanter, men en abstrakt klasse kan have attributter. Interfaces er ikke arv. De er uafhængige Men interfaces kan indbyrdes arve fra hinanden

Instance som en type Når et interface defineres, defineres en ny reference type, på samme måde som med en klasse Interface navne kan bruges på samme måde som klasse navne Hvis en variabel er erklæret som en instans af et interface, skal den sættes til et objekt af en klasse, der implementerer interfacet Hvis Person implementerer PersonInterface: Person p1 = new Person(); PersonInterface pi1 = p1; PersonInterface pi2 = new Person();

Defining Interfaces public interface [InterfaceName] { //some methods without the body }

Implementere Interfaces For at oprette en klasse der implementerer et interface, bruges implements keyword. public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } // More code follows

public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); public boolean isLess( Object a, Object b){ return (aLen < bLen); public boolean isEqual( Object a, Object b){ return (aLen == bLen);

Implementering af interfaces Følgende opstår hvis ikke alle interface metoder er implementeret Line.java:4: Line is not abstract and does not override abstract method isGreater(java.lang.Object,java.lang.Object) in Relation public class Line implements Relation ^ 1 error

Eksempel: Implementere multiple interfaces En konkret klasse extends een super klasse, men kan implementere flere Interfaces: public class ComputerScienceStudent extends Student implements PersonInterface, AnotherInterface, Third interface { // All abstract methods of all interfaces // need to be implemented. }

Interface arv Interfaces er ikke en del af klasse hierarkiet Men de kan alligevel arve fra andre interfaces public interface PersonInterface { void doSomething(); } public interface StudentInterface extends PersonInterface { void doExtraSomething();

Interface og polymorfi Interfaces understøtter polymorfi på den måde at når programmet kalder en interface metode, vil den rigtige metode afhængigt af typen blive kaldt

Omskrivning af et eksisterende interface Her er et interface: public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); } I en senere version skal interfacet udvides boolean didItWork(int i, double x, String s); Hvis man gør det kan de gamle klasser, der bruger interfacet ikke længere bruges

Løsning public interface DoItPlus extends DoIt { boolean didItWork(int i, double x, String s); } Nu kan de gamle klasser stadig bruge det gamle interface, mens de nye klasser implementerer både det nye og det gamle