Programmeren in Java 3



Vergelijkbare documenten
Programmeren in Java 3

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Modulewijzer Tirdat01

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Programmeren in Java 3

VI. Klassen en objecten

Programmeren in Java 2

Zelftest Programmeren in Java

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Java. Basissyllabus. Egon Pas

Modelleren en Programmeren

Kleine cursus PHP5. Auteur: Raymond Moesker

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Programmeren in C# Interfaces. Hoofdstuk 23

Programmeren in Java les 3

Vakgroep CW KAHO Sint-Lieven

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Een stoomcursus door Edgar de Graaf, november 2006

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Abstracte klassen & Interfaces

Stacks and queues. Hoofdstuk 6

IMP Uitwerking week 13

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Ontwerp van Informatiesystemen

Modelleren en Programmeren

Tentamen Imperatief Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Programmeren (1) Examen NAAM:

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

INFITT01 Internettechnologie WEEK 2

HvA Instituut voor Interactieve Media ActionScript 3.0

Datastructuren Werkcollege Intro

3.1 Opsomming data type

Datastructuren en algoritmen

Voorbeeld: Simulatie van bewegende deeltjes

Modelleren en Programmeren

Unified Modeling Language

INFITT01 - Internettechnologie WEEK 8

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering

Wat is een grafische gebruikersinterface (GUI)?

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Modelleren en Programmeren

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Game of Life in Java

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

NAAM: Programmeren 1 Examen 21/01/2011

et Zend Framework bestaat volledig uit objectgeoriënteerde

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Objectgericht programmeren 1.

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

NAAM: Programmeren 1 Examen 29/08/2012

NHibernate als ORM oplossing

Domeinmodellen en klassendiagrammen

Genetische algoritmen in Java met JGAP

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Datastructuren: stapels, rijen en binaire bomen

Objectgeoriënteerd programmeren in Java 1

Programmeren in C# Overerving

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Modelleren en Programmeren

Programmeren in C ++ les 4

Scala. Korte introductie. Sylvia Stuurman

Introductie en even voorstellen

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Programmeren in C# Klassen schrijven

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Object-oriented programmeren met BlueJ en Visual Studio

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

programmeren Mobiel Mobilofoon 1960 Apple iphone 2007 met ios Nokia Samsung S met Android Motorola Dyna-Tac 1973

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Hoofdstuk 0. Van Python tot Java.

Transcriptie:

26 september 2007

Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces

Meer over class deriving Classes kan men ook naast elkaar afleiden:

Classes naast elkaar afleiden: polymorphisme Polymorphisme: letterlijk vertaald: veelvormigheid gebruiken om meerdere varianten van dezelfde class op te bouwen voorbeelden: algemeen: auto, vormen: bmw, audi, etc. algemeen: roofdier, vormen: luipaard, tijger, panter, hond, etc.

In de Java a.p.i. algemeen: component, vormen: jbutton, jframe, jcombobox, etc. algemeen: database connectie, vormen: odbc, mysql, jdbc, etc. algemeen: netwerk connectie, vormen: tcp/ip, slip, cslip, ppp, ftp, etc. e.v.a.

Gebruik Gegeven de klasse auto: fields: private String kleur private int prijs methodes: public void startmotor() public void spuitover(string kleur) Methodes worden overridden in de van auto afgeleide classes (bmw, audi, etc.)

Gedeclareerd en actueel type bmw b = new bmw(); b.startmotor(); Toegestaan?

Gedeclareerd en actueel type bmw b = new bmw(); b.startmotor(); Toegestaan? Ja! auto x = new opel(); x.startmotor(); Toegestaan?

Gedeclareerd en actueel type bmw b = new bmw(); b.startmotor(); Toegestaan? Ja! auto x = new opel(); x.startmotor(); Toegestaan? Ja!

Gedeclareerd en actueel type bmw b = new bmw(); b.startmotor(); Toegestaan? Ja! auto x = new opel(); x.startmotor(); Toegestaan? Ja! auto x vormt het gedeclareerde type opel() vormt het actuele type

Welke methode? auto x = new opel(); x.startmotor(); Welke methode wordt nu aangroepen? opel.startmotor(); auto.startmotor();

Welke methode? auto x = new opel(); x.startmotor(); Welke methode wordt nu aangroepen? opel.startmotor(); auto.startmotor(); Antwoord: de methode van het actuele type, opel.startmotor() dus...

Gebruik De constructie auto x = new opel(); x.startmotor(); is wat dubieus... Waarom zou men dit doen?

Arrays van pointers naar objecten auto[] a = new auto[20]; for(int i=0;i<20;i++) { a[i]= new opel()/bmw()/ferrari()/mazda(); } for int i=0;i<20;i++) { a[i].startmotor(); }

Arrays van pointers naar objecten Met de constructie for int i=0;i<20;i++) { a[i].startmotor(); } roept men in het algemeen de methode startmotor() aan, terwijl deze specifiek gedrag oplevert daar altijd de methode van het actuele wordt aangeroepen...

Problemen In een programma:... bmw x = new bmw(); opel y = new opel(); auto z = new auto();... in bovenstaand programma is een merkloos auto object aangemaakt... niet erg fraai! soms zelfs ronduit gevaarlijk

het keyword abstract Met het keyword abstract kan men een klasse als abstract definiëren. public abstract class auto { //FIELDS... //CONSTRUCTORS... //METHODS... }

De abstracte klasse De abstracte klasse: mag men niet tot een object instantiëren kan alle standaard onderdelen zoals fields, methods en constructors bevatten. Door de klasse auto als abstract te definiëren dwingt men af dat er nooit merkloze auto s in het programma voorkomen. Dit is dus een veilige situatie. Abstracte classes kan men als voorzorgsmaatregel inzetten om te bereiken dat alleen objecten van de afgeleide classes mogen worden gebruikt.

De abstracte methode Een abstracte klasse moet tenminste één abstracte methode hebben: public abstract class auto { //FIELDS... //CONSTRUCTORS... //METHODS public abstract void startmotor(); } Van deze abstracte methodes noteert men alleen hun signatuur

De abstracte methode Door (de signatuur van) een abstracte methode op te nemen in de abstracte klasse, dwingt men de programmeur een implementatie te leveren van deze methode in elke klasse die van de base klasse wordt afgeleid.

De interface De interface: Syntax: kan men opvatten als een abstracte klasse echter: alleen signaturen van abstracte methodes alleen final variabelen public interface x { public final int i=75;... public void doe_iets();... }

Gebruik van interfaces public class c implements x { public void doe_iets() {... weet_ik_veel_wat();... } }

Programmeren per contract Waarom zou men een interface gebruiken? Wat is het nut van interfaces?

Voorbeeld Gegeven de interface mp3speler public interface mp3_speler { public void loadtrack(); public void playtrack(); public void next(); public void previous(); public void stop(); public void fastforward(); public void fastbackward(); }

De klasse mediaspeler public class audiospeler implements mp3speler { public void loadtrack() { bestand openen en laden(); } public void play() { geladen bestand afspelen(); }... }

De klasse winamp public class winamp implements mp3speler { public void loadtrack() { bestand openen en laden(); } public void play() { geladen bestand afspelen(); }... }

De runnable interface Een applet: wordt afgeleid van de JApplet klasse implementeert de Runnable interface De methodes in de Runnable interface dienen dus geïmplementeerd te worden. De Runnable interface wordt gebruikt bij zgn. threads. In de JApplet klasse wordt het starten en stoppen van een thread door de browser geregeld.

Unified Modelling Language visuele taal eigen regels eigen syntax de facto standaard voor o.o.p. U.M.L. is niet: een programmeertaal (u.m.l. produceert een raamwerk, geen algoritmen) een modelerings tool een ontwikkel methode uitontwikkeld

De class Een klasse representeert men met een rechthoek: classnaam attributen operaties

Voorbeeld (analyse) autobedrijf -saldo:int -werkplaats:garage +koopauto() +verkoopauto() +naargarage()

Voorbeeld (ontwerp) autobedrijf -saldo:int -werkplaats:garage +koopauto(auto x):boolean +verkoopauto(auto x):boolean +naargarage(auto x):boolean

Attributen attributen vormen de variabelen in een class kunnen van elk denkbaar type zijn: int float etc. andere classes

Operaties vormen de methodes/functies in een class kunnen parameters hebben kunnen parameters teruggeven

Symbolen - : private access + : public access # : protected access ~: beschikbaar in dezelfde package

Voorbeeld (ontwerp) autobedrijf -saldo[1]:int -/dollars[1]:int -telnummer[1..3]{unique}:string -werkplaats[1]:garage +koopauto(auto x):boolean +verkoopauto(auto x):boolean +naargarage(auto x):boolean / variabele verkregen/opgebouwd uit andere variabelen [] aantal mogelijke waarden van attribuut {unique} geen dubbele waarden

Meer eigenschapen {unique}:geen dubbele waarden {union}:gemeenschappelijke waarden {subsets}:deelverzameling van waarden {redefines}:herdefinitie {ordered}:volgorde van belang {bag}:verzameling waarin dubbele waarden mogen voorkomen {sequence}:bag en ordered {composite}:samengesteld uit andere attributen

Associatie Twee objecten kunnen iets met elkaar te maken hebben. Dit wordt genoteerd middels een rechte lijn: Het soort associatie kan men er in tekst bijzetten Het minimum en maximum aantal objecten plaats men middels getallen aan beide einden.

Ook toegestaan

Aggregatie De ene klasse kan als attribuut een andere klasse hebben. Deze andere klasse kan bestaan zonder de klasse, waarvan deze attribuut is.

Compositie Een klasse a kan niet bestaan zonder de klasse b die klasse a als attribuut heeft dichte diamanten: het ene object kan niet bestaan zonder het andere: compositie open diamanten: het ene object kan bestaan zonder het andere: aggregatie

Generalisatie In het algemeen:

Voorbeeld