DIA Opdracht 4 (Arjan Dekker)



Vergelijkbare documenten
Abstracte klassen & Interfaces

Kleine cursus PHP5. Auteur: Raymond Moesker

Scala. Korte introductie. Sylvia Stuurman

Datastructuren: stapels, rijen en binaire bomen

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

Voor vragen: of mail naar

Objectgericht Programmeren. (in Python)

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

Inleiding Programmeren 2

RF Monitoring: Handleiding

Verslag Opdracht 4: Magische Vierkanten

Javascript oefenblad 1

Dynamische webapplicaties in Java

Object Oriented Programming

Thinking of Development

Project Software Engineering XML parser: Parsen van een xml CD catalogus

In BlueJ. Doe onderstaande met muis/menu s:

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Vakgroep CW KAHO Sint-Lieven

Testondersteuning in frameworks voor webapplicaties

Les 3. Gebruik in volledige programma Default argumenten Vergelijken van objecten

Modelleren en Programmeren

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

Lessen Java: Reeks pag. 1

IMP Uitwerking week 13

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

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Inleiding Programmeren 2

Inleiding Programmeren 2

MVC BASICS 2. Kevin Picalausa

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

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

ASP.NET Test Jan Van Ryckeghem

Programmeren in C# Samenvatting van C#

ASRemote WebService. Via deze webservice kunt u:

Extra voorbeelden. 1 Objectenhierarchie. 2 Kalender

Inleiding Programmeren 2

Dynamiek met VO-Script

Universitair Harmonisch Orkest

What is the advantage of using expression language instead of JSP scriptlets and JSP expressions?

Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18

Een gelinkte lijst in C#

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5

Datastructuren: stapels, rijen en binaire bomen

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

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

4 ASP.NET MVC. 4.1 Controllers

Een eenvoudig algoritme om permutaties te genereren

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

N&O: Objectgericht Programmeren. (in Python)

WEBSECURITY INFORMATICA STUDENTENWERKING. Gemaakt door Bryan De Houwer en Yuri Moens

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

De MySQL C API. Variabelen in C Functies in C Pointers in C

Inleiding C++ Coding Conventions

Chris de Kok TDI 3. Vak: Software Architectuur Datum: Docent: Fons van Kesteren

Objectgeoriënteerd Programmeren: WPO 2a

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

Je hoeft je maar met twee bestanden bezig te houden:

is eigenlijk overbodig!

Practicumopgave 3: SAT-solver

In een klassendiagram worden klassen beschreven in termen

Leren programmeren in C# Deel 2 - Gegevens

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Informatica. Deel II: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Inhoud. VBA Excel 2010

DrICTVoip.dll v 2.1 Informatie en handleiding

Game of Life in Java

Welkom-tab op facebookpagina

Dynamische Websites. Week 10

Werkboek studiekeuzecheck Opleiding HBO-ICT

BSCW-WebDAV Handleiding

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

Inleiding Programmeren 2

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

extra oefening algoritmiek - antwoorden

Small Basic Console Uitwerking opdrachten

Javascript deel 3. Document Object Model Objecten

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Modelleren en Programmeren

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

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

In gesprek met externe toepassingen

Software Design Document

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

li d a l n s V a l GEMEENTE MAARTENSDIJK r Nbo bestemmingsplan buitengebied g g Nbo Nbo Schaal 1:5000 plankaart noord

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, uur

Inleiding Programmeren 2

1. Installatie netwerklock

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

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

Transcriptie:

DIA Opdracht 4 (Arjan Dekker) Place klasse: #Deze klasse wordt gebruikt in zowel de client als de server #Daarom deze klasse in apart bestand gezet, die geinclude wordt #door zowel de server als client class Place #automatisch get functies aangemaakt attr :row attr :seatnumber #deze moet ook ge set worden, door true wordt automatisch een set functie aangemaakt attr :cr_number, true #de constructor def initialize(row, seatnumber) @row = row @seatnumber = seatnumber

Client: #!/usr/bin/ruby #Distributed ruby en de place klasse zijn nodig, dus includen require 'drb/drb' require 'place.rb' #poort en plaats waar server op draait SERVER_URI = "druby://localhost:8787" #starten van de service DRb.start_service bios_service = DRbObject.new_with_uri(SERVER_URI) #weergeven van een welkomsbericht print "Welkom bij de BiosFactory\n" #Loopen tot applicatie gesloten wordt loop do #inlezen van wat gegevens print "Voer bioscoopnaam in: " bios = gets #de bioscoop wordt of aangemaakt of gereturned indien deze bestaat bioscoop = bios_service.get_bioscoop(bios)

#inlezen van wat gegevens print "Voer Rij in (A..Z): " rij = gets #inlezen van wat gegevens print "Voer stoelnr in (1..50): " seatnr = gets #nieuw place object aanmaken en doorgeven aan server print "Kaartje kost: ", bioscoop.getprice(place.new(rij.chop!,seatnr.chop!)), "\n" #inlezen van wat gegevens print "Kaartje kopen? (j/n): " answer = gets answer.chop! #indien kaartje te duur of iets dergelijks, dan plaats niet reserveren if answer == "j" print "Voer creditcard nummer in: " creditcardnr = gets #booksingleseat uitvoeren op server met een nieuw aangemaakte instantie van de place klasse bioscoop.booksingleseat(place.new(rij, seatnr), creditcardnr)

#Overzicht uitprinten (niet nuttig maar dit laat alleen zien dat het werkt ; ) ) print bioscoop.printsummary() #aantal geboekte plaatsen weergeven (niet nuttig maar dit laat alleen zien dat het werkt ; ) ) print "aantal plaatsen: ",bioscoop.getnumberofseats(),"\n\n"

Server: #!/usr/bin/ruby #Distributed ruby en de place klasse zijn nodig, dus includen require "drb/drb" require 'place.rb' #poort en plaats waar server op draait URI = "druby://localhost:8787" #De klassen waarvan de server instanties bijhoudt class Bioscoop #dit nodig om een referentie van het object door te geven include DRb::DRbUndumped #De constructor def initialize(bios_name) @bios_name = bios_name @places = [] #functie retouneerd de prijs (boeken van een rij voor rij F is duurder dan achterin de zaal) def getprice(pl) if pl.row < "F" return 10 else return 7

#retouneerd het aantal geboekte plaatsen def getnumberofseats() return @places.size #genereerd een overzicht van alle plaatsen die geboekt zijn. def printsummary() summary = summary, "Overzicht #{@bios_name}" summary = summary, "Plaatsen die geboekt zijn:\n" #de array met plaatsen langs van deze betreffe bioscoop @places.each { i summary = summary, i.row,i.seatnumber, " betaald met cr_nummer :", i.cr_number, "\n" } #geeft een lijst met geboekte plaatsen terug return "#{summary}" #returned de naam van de bioscoop def getbiosname() return @bios_name #voegt een geboekte plaats toe aan de places array def booksingleseat(pl,cr_number) pl.cr_number = cr_number @places.push(pl)

#De factory pattern klasse (maakt instanties van het bioscoop object aan, als deze nog niet bestaat #en geeft de juiste bioscoop terug als erom gevraagd wordt. class BiosFactory def initialize() @bioscopen = {} #geeft de bioscoop terug waarom gevraagd wordt. #bestaat deze niet dan wordt er een nieuw object aangemaakt en deze wordt terug gegeven. def get_bioscoop(name) #check of object al bestaat if!@bioscopen.has_key? name #bestaat nog niet dus nieuwe aanmaken @bioscopen[name] = Bioscoop.new(name) #bestaat wel dus de juiste terug geven return @bioscopen[name] #Server Object aanmaken (nodig om mee te kunnen communiceren) SERVER_OBJECT = BiosFactory.new() #Service wordt gestart $SAFE = 1 DRb.start_service(URI, SERVER_OBJECT) DRb.thread.join