Newest Viewed Downloaded

Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder 9.15. www.itu.dk/courses/GP/E2005 Martin Lillholm

Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder 9.15. www.itu.dk/courses/GP/E2005 Martin Lillholm

Obligatorisk opgave

Var opgaven til i onsdags For nem For svær Tilpas – skulle bruge noget tid og tanker på den, men så var den også til at løse/forstå. Er der nogen, der ikke har afleveret fordi den slet ikke var til at få hul på?

”Terminsprøve”

Fredag den. 18 november fra 13-16 Afløser den obligatoriske opgave: Til stede og afleverer – rettes som eksamenssæt Ikke til stede – afleverer almindeligt – rettes almindeligt Forsøger at gøre det så realistisk så muligt…

Evaluering

Hvorfor overhovedet evaluere ? Hvor mange har overhovedet evalueret ? Husk det nu !!

Projekter

Hvorfor projekter i GP ? Projektforslag næste gang Projektdag den 9. november

Sidste gang

Nedarvning Skrivning til tekstfil

Denne gang

Wrapper klasser Interfaces Typer i Java Polymorfi Søgning og sortering

Wrapper-klasser

Void void Boolean boolean Character char Double double Float float Long long Integer Int Short Short Byte byte Wrapper klasse Primitiv type Til alle primitive typer (byte, short, int, long, float, double, char, boolean, void) findes såkaldte wrapper klasser Giver mulighed for at repræsentere primitive typer som objekter: Integer countObj = new Integer (10); Hvorfor wrapper-klasser? Ophæv skellet mellem primitive typer og objektyper Polymorfi Hjælpemetoder (L&L appendiks M)

Autoboxing og unboxing

Automatisk konvertering mellem primitive typer og den tilsvarende wrapper-klasse: Integer count; int number = 42; count = number; // Autoboxing Integer i = new Integer (32); int j; j = i; // Unboxing

Grænseflader (interfaces)

Eksplicitte og implicitte interfaces Et (eksplicit) interface er en samling af abstrakte metoder (og konstanter) (og er en type ... se senere) For konstanterne er public static final underforstået og derfor ikke nødvendige. Konstanterne er tilgængelige i instanser, der implementerer interfacet For metoderne er public abstract underforstået og derfor ikke nødvendige En klasse der implementerer et interface skal implementere metoderne i interfacet – hvorfor ? Men kan sagtens implementere flere/andre offentlige metoder. En klasse kan implementere flere interfaces Interface hierakier er mulige Nøgleord: interface og implements (Svarer groft sagt til class og extends) Hvorfor interfaces ?

Interfaces – eksempler

public interface Complexity { public void setComplexity (int Complexity); public void getComplexity (); } Question.java L&L side 311 i BlueJ Comparable Metoden: int CompareTo (Object obj); Contact.java L&L side 503 I BlueJ

Nedarvning

Studerende Person TAP Ansat VIP Hvad har de tre typer personer til fælles: De er alle personer med navn og højde Både VIP’ere og TAP’ere er ansat i en afdeling

Typer i Java

Primitive typer: (byte, short, int, long, float, double, char, boolean, void) 12, -34, 57, 43234, 2.31f, … Referencetyper: Klassetype – givet i kraft af en klasseerklæring (Interface-type – givet i kraft af en interface erklæring) Tabeltype (array type), t[] hvor t er en type null eller en reference til et objekt

Subtyper

En type t1 kan være en subtype af en type t2. I givet fald er t2 en supertype af t1 Generelt: Enhver type er en subtype af sig selv Hvis t1 er en subtype af t2 og t2 er en subtype af t3 så er t1 en subtype af t3 For primitive typer: char er en subtype af int, long, float og double byte er en subtype short, int, long, float og double short er en subtype af int, long, float og double int er en subtype af long, float og double long er en subtype af float og double float er en subtype af double (widening)

Subtyper

For referencetyper: Hvis t1 og t2 er klasser så er t1 en subtype af t2 hvis t1 er en subklasse af t2 Hvis t1 og t2 er interfaces så er t1 en subtype af t2 hvis t1 er et subinterface af t2 Hvis t1 er en klasse og t2 er et interface så er t1 en subtype af t2 hvis t1 implementerer t2 eller implementerer et subinterface af t2 En tabeltype t1[] er en subtype af tabeltype t2[] hvis referencetype t1 er en subtype af referencetype t2 Alle referencetyper inklusive enhver tabeltype er en subtype af Object Ingen primitive typer er subtyper af en referencetype. Ingen referencetyper er subtyper af primitive typer (Sestoft 2002)

Hvorfor alt det her?

Lad t1 være en subtype af t2 Enhver værdi v1 af type t1 kan benyttes, hvor en værdi af type t2 forventes Vi siger at typerne t1 og t2 er kompatible

Polymorfi

Mirriam-Webster Online: Main Entry: poly·mor·phism Function: noun : the quality or state of being able to assume different forms: as a : existence of a species in several forms independent of the variations of sex b : the property of crystallizing in two or more forms with distinct structure - poly·mor·phic adjective - poly·mor·phi·cal·ly adverb “Almindelig” reference “Polymorf” reference – subtyper – kompatibilitet Sen binding (late binding)

Polymorfi gennem arv eksempler

Studerende Person TAP Ansat VIP Person person; Studerende studerende; Ansat ansat; Vip vip; person = ansat // OK – hvorfor ? person = studerende; ansat = vip; vip = ansat; // ikke ok – hvorfor ? Hvad med metodekald ? Sen binding. Firm.java i L&L side 486 i BlueJ

Polymorfi gennem interfaces

public interface Speaker { public void speak(); public void annonce(); } Speaker current; current = new Philosopher(); // Antag at en Philosopher implementerer // Speaker samt metoden talk() Speaker guest; guest = new Philosopher(); guest.speak(); guest = new Dog(); // Tilsvarende for Dog guest.speak(); Speaker special = new Philosopher(); special.talk(); // FORKERT – hvorfor ? ((Philosopher)special).talk() // OK – hvorfor ? public void sayIt (Speaker current) { // Hvad kan vi kalde med ? current.speak(); }

Det store motiverende eksempel

Cirkler og Rektangler som eksempler på former InheritanceDriver.java InheritancePanel.java (InheritancePanel1.java) Shape.java Circle.java Rectangle.java Findes alle på hjemmesiden

Showing 1 - 20 of 32 items Details

Name: 
GP8
Author: 
.
Company: 
ITU
Description: 
Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder 9.15. www.itu.dk/courses/GP/E2005 Martin Lillholm
Tags: 
subtype | sort | java | hvorfor | søgning | typer | int | type
Created: 
11/7/2003 1:51:24 PM
Slides: 
32
Views: 
0
Downloads: 
0
Rating: 
0


Comment



Share this presentation
|

Comments

Share this presentation:

|
Sitemap