Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk

Vergelijkbare documenten
Overerving & Polymorfisme

NAAM: Programmeren 1 Examen 21/01/2011

IMP Uitwerking week 13

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 (1) Examen NAAM:

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

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

VI. Klassen en objecten

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

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

NAAM: Programmeren 1 Examen 31/08/2011

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

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

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

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

Abstracte klassen & Interfaces

Programmeren in C# Interfaces. Hoofdstuk 23

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

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Programmeren in C# Overerving

Zelftest Programmeren in Java

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

Modelleren en Programmeren

Objectgericht programmeren 1.

Scala. Korte introductie. Sylvia Stuurman

Objectgericht programmeren 1.

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

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Ontwerp van Informatiesystemen

Ingebouwde klassen & methodes

Modelleren en Programmeren

ALGORITME objectgeoriënteerd programmeren

Opdracht 7a. Applicatiebouw 2014/2015

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

Tentamen Imperatief Programmeren

SYNTRA-WEST. Cursus OOP. Deel

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren in Java 3

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

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

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

Deel 1 : Gesloten Boek

NAAM: Programmeren 1 Examen 29/08/2012

Inhoudsopgave. Hoofdstuk 1.RMI...2

1 Ontwerppatronen. 1.1 Het Command patroon

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Modelleren en Programmeren

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

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

Programmeren in Java 3

Object Oriented Ontwerp. Yannick Reekmans

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Deeltentamen Grammatica s en ontleden 22 december 2005

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Objectgericht programmeren 1

Programmeren in C# Klassen schrijven

Objectgeoriënteerd Programmeren: WPO 2a

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

TENTAMEN Programmeren 1

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

APPLICATIEBOUW 6E COLLEGE: HET ONTWERPEN VAN EEN KLASSE, LEJOS DEEL 3. Onderdeel van SmartProducts

Opdracht 6: Dodo wordt blijvend slimmer

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Java. Basissyllabus. Egon Pas

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

Windows-applicatie. using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( )

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

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

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

et Zend Framework bestaat volledig uit objectgeoriënteerde

Intent. Intent: bedoeling om een nieuwe activiteit te starten. eigen activiteit. standard. Hallo Teller. web-browser text-sender

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

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


Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Modelleren & Programmeren. Jeroen Fokker

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

Object-geOriënteerd Programmeren & Life

Game of Life in Java

Samenvatting programmeren I

Kleine cursus PHP5. Auteur: Raymond Moesker

Opdracht 6: Dodo wordt blijvend slimmer

Uitwerkingen aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur

Een gelinkte lijst in C#

Objectgericht ontwerpen

Voor het bepalen van de getalswaarde van een string is een standaardmethode beschikbaar: n = Integer.parseInt(s);

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Objectgeoriënteerd programmeren in Java 1

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

In BlueJ. Doe onderstaande met muis/menu s:

Modelleren en Programmeren

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

Transcriptie:

Project network Gebaseerd op paragrafen 10.1-10.7, 11.1-11.6 uit het boek. We simuleren een sociaal netwerk Er zijn twee soorten berichten: tekstberichten en fotoberichten,... voorgesteld door de klassen MessagePost en PhotoPost We houden deze berichten bij in een object van de klasse NewsFeed,... in twee afzonderlijke lijsten: private List<MessagePost> messages =...; private List<PhotoPost> photos =...; 2015 2017 Kris Coolsaet c Universiteit Gent

MessagePost en PhotoPost MessagePost username message timestamp likes comments like( ) unlike( ) addcomment(..) gettext( ) gettimestamp( ) PhotoPost username filename caption timestamp likes comments like( ) unlike( ) addcomment(..) getimagefile( ) getcaption( ) gettimestamp( )

Overerving Post username timestamp likes comments like( ) unlike( ) addcomment(..) gettimestamp( ) MessagePost message gettext( ) PhotoPost filename caption getimagefile( ) getcaption( )

Overerving terminologie PhotoPost en MessagePost... Post erven van Post zijn deelklassen van Post zijn subklassen van Post breiden Post uit is een bovenklasse van PhotoPost en MessagePost is een superklasse van PhotoPost en MessagePost In Java: public class PhotoPost extends Post {... }

Overerving constructor De initializatie van een klasse begint altijd met de initializatie van haar bovenklasse. M.a.w., de constructor van een klasse moet eerst de constructor oproepen van de bovenklasse,... met een speciale notatie: super (...) Als deze oproep ontbreekt, veronderstelt Java een impliciete super() public MessagePost (String author, String message) { super (author); this.message = message; } Post heeft volgende constructor: public Post (String author) {... }

Overerving protected Velden van bovenklasse zijn niet toegankelijk voor klasse want ze zijn private. Oplossing: Voorzie getters en setters voor deze velden,... of maak ze protected protected int aantal; Ook methoden kunnen protected zijn. Ook een constructor kan protected zijn: protected Post (String author) {... } Op die manier kunnen geen objecten van de klasse zelf worden aangemaakt alleen van deelklassen.

Polymorfisme Overal waar een object van een klasse is toegelaten, mag ook een object van een deelklasse gebruikt worden. Als inhoud van een variabele Post post = new MessagePost ("KC", "Hallo!"); List<String> lijst = new ArrayList<>( ); Als element van een array of lijst List<Post> posts =... MessagePost messagepost =...... posts.add (messagepost); Als parameter van een methode posts.add (messagepost); Enz...

Arbeiders en bedienden Opgave Pas het project personeel-v1 aan zodat het gebruik maakt van overerving. Bediende naam maandloon getnaam( ) getloon( ) Arbeider naam uurloon urengewerkt getnaam( ) getloon( ) registreeruren(..) Opmerking. Er zal wellicht een probleem optreden wanneer je getloon( ) naar een bovenklasse verplaatst. Wat is dit probleem?

Het display-probleem We willen dat tekstberichten en fotoberichten op een (lichtjes) andere manier worden afgebeeld. Post MessagePost PhotoPost Post heeft echter geen toegang tot velden van MessagePost of PhotoPost.

Het display-probleem eerste poging Post MessagePost PhotoPost Compileert niet for (Post post : posts) { post.display (); System.out.println (); } cannot find symbol method display()

Het display-probleem tweede poging Post MessagePost PhotoPost Welke van de drie methoden display worden opgeroepen? Dit wordt bepaald door de klasse waartoe het object behoort, Niet door het type van de variabele waarin het object zich bevindt.

Type vs. klasse Type Van een variabele, parameter of functie Alleen belangrijk at compile time Bepaalt of een methode mag opgeroepen worden op een bepaalde variabele Klasse Van een object Wordt bepaald op het moment dat het object wordt aangemaakt met new Vooral belangrijk tijdens run time Opmerking: Alternatieve terminologie: type = statisch type, klasse = dynamisch type

Het display-probleem nog een versie Post MessagePost PhotoPost Wat gebeurt er als we onderstaande code proberen uitvoeren? for (Post post : posts) { post.display (); System.out.println (); }

De super-aanroep in methodes Je kan ook de superklasseversie van een methode oproepen in de subklasse. public class MessagePost { } public void display() { super.display (); System.out.println(message); }...

Arbeiders en bedienden vervolg Hou één lijst bij van personeelsleden in plaats van afzonderlijke lijst voor bedienden en arbeiders Zorg dat getloon( ) doet wat het moet doen (m.a.w., niet hetzelfde voor arbeiders en bedienden). Voeg een methode willekeurigepersoon toe aan Tester en gebruik deze methode in willekeurigeberekening.

Aangepast klassendiagram Persoon naam getnaam( ) getloon( ) Arbeider uurloon urengewerkt getloon( ) registreeruren(..) Bediende maandloon getloon( )