Software-Ontwikkeling I Academiejaar 2006-2007



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

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

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

Vraag 1: HashTable [op 2 punten van de 20] Gegeven de header file HashTable.h van een hashtabel die pointers naar strings bijhoudt (in bijlage).

Programmeren in C++ Efficiënte zoekfunctie in een boek

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

Programmeren Het gesloten boek examen 1.1

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Vakgroep CW KAHO Sint-Lieven

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13

AFO Invoer /output profielen

Labo 2 Programmeren II

Oefeningen Jaarproject I

Inleiding tot de catalogus. 10mm. foto

Software Design Document

Academie voor ICT en Media 2013/2014

Tentamen Programmeren in C (EE1400)

SYNTRA-WEST. Cursus OOP. Deel

BIBLIOTHEEKNET. VLAAMS-BRABANT Inleiding tot de catalogus

BIBLIOTHEEKNET. VLAAMS-BRABANT Inleiding tot de catalogus

BIBLIOTHEEKNET. VLAAMS-BRABANT Inleiding tot de catalogus

Software-Ontwikkeling I Academiejaar

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

Inleiding tot de catalogus. 10mm. foto

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

Handleiding BIBLIOTHEEK. Handig online materialen verlengen, reserveren en nog veel meer!

BIBLIOTHEEKNET. VLAAMS-BRABANT Inleiding tot de catalogus

BIBLIOTHEEKNET. VLAAMS-BRABANT Inleiding tot de catalogus

BIBLIOTHEEKNET. VLAAMS-BRABANT Inleiding tot de catalogus

Introductie in C++ Jan van Rijn. September 2013

Handleiding. T&D Event. Vincent Adriaensen Kevin De Pooter Robbe Van Bael 2 Ti 6

Handleiding helpdesk. Datum: Versie: 1.0 Auteur: Inge van Sark

Variabelen en statements in ActionScript

DE BIBLIOTHEEK BIJ JE THUIS. Verlengen, reserveren.via internet

Programmeren: Visual Basic

Een eerste applicatie

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

Werken met Bibliotheek.net

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

Datastructuren Uitwerking jan

MIJN BIBLIOTHEEK. Introductie tot MIJN BIBLIOTHEEK. Maak van de bib nog meer jouw bib dankzij Mijn Bibliotheek! oktober 2015

IMP Uitwerking week 13

Mijn eerste ADO.NET applicatie

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

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

Tentamen Informatica 6, 2IJ60,

Zelftest Programmeren in Java

Inleiding C++ Coding Conventions

Labo 1 Programmeren II

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

Versturen van vanuit een Delphi VCL toepassing

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

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

Gebruikersreglement Bib Londerzeel

Practicumopgave 3: SAT-solver

AFO 142 Titel Aanwinsten Geschiedenis

Bibliotheek Queteletfonds Vooruitgangstraat Brussel Tel: Fax:

Stacks and queues. Hoofdstuk 6

Google Drive. Wat is google drive. Wat heb je nodig en wat krijg je. Je aanmelden aan de cloud

Objectgeoriënteerd Programmeren: WPO 2

Viaa Online - OneDrive


Handleiding Mijn bibliotheek

AFO 622 Kalenders Inleiding

Surf dus naar en log in met je gegevens, zoals in vorige hoofdstukken uitgebreid werd uitgelegd.

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

Programmeren: Visual Basic

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

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

NHibernate als ORM oplossing

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF Reken om naar EURO---

Gebruikersreglement Bib Londerzeel

lesboek Jonker & Wu CAD support

Toets informatica V5 module VIII hfst 1, 2 en 3 februari 2011

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

AFO Beheer rekeningen

AFO Leveranciers

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

Design patterns Startbijeenkomst

Website maker. Bezoek je domein om de Website maker in te stellen. De volgende melding zal zichtbaar zijn.

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Release notes:

Modulewijzer tirprog02/infprg01, programmeren in Java 2

case: ocl-expressies

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Handleiding . Aan de slag. in beroep en bedrijf. Handleiding

Hoofdstuk 7: Werken met arrays

Ga naar en log in met de gebruikersnaam en wachtwoord verkregen via mail.

Lessen Java: Reeks pag. 1

Software Factories. Toepassing van Domain Specific Languages. achtergrond

AFO 733 Leenrecht Inleiding. Licentie informatie. Stichting Leenrecht

Project Objectgericht Programmeren : Deel 3

Hoe te werken met Word en SmarTeam?

surf ik bib? hoe naar mijn in een wip Ook mijn bibliotheek is een Ovinob-bibliotheek! Surf naar

Een gelinkte lijst in C#

UITLEG BIJ UW TEMPLATE

Het Bibliotheekbeheer systeem

Javascript oefenblad 1

Verbeteringen in Aura Online update dec 2011

/20. richtlijnen. Lees deze richtlijnen! Log in op de pc met. login: paswoord: examen i examen001. Log in op. x.toledo.ucll.be

Transcriptie:

Software-Ontwikkeling I Academiejaar 2006-2007 Project: Bibliotheekbeheer 1

1. Digitale bibliotheek a. Inleiding Bibliotheken houden onder meer hun collecties van uitleenbare artikels bij in digitaal formaat. Dit om het uitlenen en beheren van deze artikels zo makkelijk en overzichtelijk mogelijk te maken. Door middel van een beheerprogramma wordt door de werknemers van de bibliotheek met het systeem geïnterageerd voor het uitlenen van artikels, het invoeren van nieuwe artikels in het systeem, het bepalen van boetes, Het doel van het project is een command line/console applicatie te maken voor het beheer van een bibliotheek. Dit uiteraard in C++, enkel gebruikmakend van de ANSI C++ standaard. b. Opgave De bibliotheek leent 4 verschillende soorten artikels of items uit: boeken, magazines, cd s en dvd s. Bij elk item hoort informatie zoals titel, auteur, en de boete die een uitlener moet betalen indien hij/zij het item te laat terugbrengt. De boete voor cd s en dvd s bedraagt 1,5 euro per dag, terwijl die voor boeken en magazines respectievelijk 0,5 en 0,25 euro per week bedraagt. Een week wordt geteld in dagen dat de bibliotheek toegankelijk is, dit is 6 dagen per week (weekdagen + zaterdag). Indien een boete per week wordt bepaald, dan wordt het aantal dagen afgerond naar boven indien geen veelvoud van een week. Er kan ook per item expliciet een aangepaste boetewaarde gedefinieerd worden (bijvoorbeeld bij veelgevraagde of nieuwe items). Verder hebben cd s en dvd s een veld dat de speelduur ervan aangeeft en een veld dat het aantal effectieve discs bijhoudt, terwijl boeken en magazines een veld met het aantal pagina s bevatten, evenals een veld dat de uitgever bijhoudt. Informatie specifiek voor een bepaald soort item: Cd: een lijst van de tracks Dvd: een string die het type data erop aangeeft (vb. video/mpeg2) Magazine: o De jaargang o Het volgnummer (per jaar) o Het hoofdonderwerp Boek: een lijst van de hoofdstukken 2

Tevens heeft ook elk item een functie om de boete vanaf een bepaald moment te berekenen (ten opzichte van de huidige datum), en een functie om een tekstuele representatie van het item te verkrijgen. Ter ondersteuning van de beheersapplicatie zal ook een (overladen) == operator nodig zijn om items met elkaar te vergelijken. Een overzicht van de klassenstructuur die bekomen wordt uit deze probleemstelling zie je hieronder (in UML-notatie). Bij het berekenen van de boete voor een bepaald item zijn 2 datums vereist. Deze datums worden gemodelleerd door de klasse Date die de volgende operaties moet aanbieden: Constructoren: o default o copy o opgegeven dag, maand, jaar, weekdag o opgegeven string die een datum bevat (vb. donderdag 23/11/2006) Getters voor de attributen dag, maand, jaar en weekdag Operatoren (voeg const toe waar nodig): o Date operator+(short): telt een opgegeven aantal dagen op bij deze datum 3

o short operator-(date&): bepaalt het verschil in dagen tussen deze datum en een opgegeven datum Een tostring methode die deze datum naar een string converteert De constructoren van de Date klasse krijgt ook een dagaanduiding mee om te kunnen bepalen of een per dag betaalde boete over een periode van meer dan 1 week loopt (zondagen tellen immers niet mee). Je kan dit op verschillende manieren implementeren, bijvoorbeeld met een enum die de dagen van de week modelleert. Van elk artikel kunnen meerdere exemplaren beschikbaar zijn. Uiteraard worden enkel exemplaren uitgeleend, artikels zelf bestaan op zich niet fysiek. Bij elke uitlening wordt de datum van uitlening opgeslagen evenals de datum waarop het exemplaar teruggebracht moet worden. Ook het uitgeleende exemplaar moet bijgehouden worden. De normale uitleentermijn bedraagt 3 weken. Verder wordt een lijst van klanten bijgehouden. Van elke klant moeten de naam, voornaam en adres opgeslagen worden. Ook moet er een mogelijkheid voorzien zijn om de totale boete te bepalen. Je applicatie moet in staat zijn om (vanuit een tekst/menugebaseerde console-applicatie, dus geen Java-stijl GUI): Een exemplaar aan een klant uit te lenen Na te gaan per klant welke exemplaren die heeft uitgeleend Items van de 4 soorten toe te voegen aan de verzameling Items aan te passen (vb. de boetewaarde) Exemplaren toe te voegen en te verwijderen Uitgeleende exemplaren terug te brengen Items te verwijderen (hierbij worden automatisch alle exemplaren van dat item verwijderd) Een klant toe te voegen en te verwijderen, of zijn gegevens te wijzigen Een momentopname van de in de applicatie opgeslagen data weg te schrijven naar een logbestand De datum aan te passen voor testdoeleinden Enkele hints/aandachtspunten: Een overzicht van de STL kan je vinden op http://www.cppreference.com/cppstl.html Hierbij vind je ook codevoorbeelden voor elke template. Maak van de klassen Item, Multimedia_Item en Textual_Item abstracte klassen, maw. het mag niet mogelijk zijn direct een object van 1 van deze klassen aan te maken. Enkel de 4

subklassen Book, Magazine, CD en DVD mogen direct instantieerbaar zijn. Let er steeds op gemeenschappelijke kenmerken van items steeds zo hoog mogelijk in de klassenhiërarchie geïmplementeerd worden, het is slechte stijl om code te dupliceren. Gebruik waar nodig het const keyword om te vermijden dat bepaalde data gewijzigd wordt (vb. bij getters) Vanzelfsprekend is het ook hier heel belangrijk je interfaces en implementaties te scheiden. Gebruik dus header files waar het nodig/nuttig is! Bij de Date klasse hoef je geen rekening te houden met schrikkeljaren. Gebruik C++ excepties waar nuttig (vb. proberen uitlenen van een item waarvan geen exemplaren meer beschikbaar zijn, verkeerd datum formaat, ) Alle opmerkingen over de practica gelden ook hier: wees zuinig met geheugen, let op voor dangling pointers, ongecontroleerde type casts,. Begin niet onmiddellijk te programmeren. Lees aandachtig de opgave en denk na hoe je de verschillende problemen zou oplossen (vb. welke klassen ga je gebruiken, wat houden ze bij, ). Zo zijn er bijvoorbeeld verschillende manieren om klanten met uitleningen te koppelen. Welke je gebruikt kies je zelf. Teken indien dat helpt een blauwdruk van je klassenschema uit, en begin pas te programmeren nadat je een goed overzicht hebt! Als referentiecompiler wordt Microsoft Visual C++ Express Edition gebruikt, je installeert deze IDE best lokaal om stabiliteitsredenen. Probeer zoveel mogelijk compiler warnings te vermijden; deze duiden meestal op fouten die Visual Studio C++ EE voor jou zal oplossen, maar die je evengoed kan vermijden door je code aan te passen. Vanzelfsprekend zijn er zaken waar deze opgave je vrij in laat; deze mag je zelf kiezen naar eigen inzicht. Verduidelijk in alle geval je broncode met commentaar waar dat nuttig is! c. Indienen Het project wordt gemaakt in groepen van 2 studenten. Het mag eventueel ook alleen gemaakt worden. Schrijf een kort verslag (max. 2 bladzijden) met daarin: De naam, voornaam en richting van de groepsleden + groepsnummer van minerva 5

Een (informele) figuur waarin je de samenwerking van je klassen toont (hoeft geen UML te zijn, zolang het maar duidelijk is) Een extra woordje uitleg bij je ontwerpsbeslissingen (max. ½ bladzijde) De taakverdeling: wie heeft wat gedaan? Zip je (compileerbare!) broncode (enkel.h en.cpp bestanden) samen met je verslag in een bestand naam_vnaam_project_nr.zip,vb. iterbeke_frederic_project_1.zip. De naam en voornaam zijn die van degene die het project indient. Het nummer is je groepsnummer vanop minerva. Stuur je oplossing door middel van de dropbox op minerva door naar Frederic Iterbeke, ten laatste op 18 december 2006, 12u s middags Veel succes! 6