OPGELET: Na indienen worden twee types testen uitgevoerd. Het tabblad ‘General’ geeft feedback over definities van instantievariabelen en methodes. Het tabblad ‘Evaluatie na examen’ toont de testen die worden gebruikt bij de evaluatie na de indiening.
Het python project Aandelen1 wordt gebruikt voor het bijhouden van je portefeuille van aandelen. Elk aandeel heeft een Markt code, een Ticker (i.e. afkorting naam aandeel), een prijs en een hoeveelheid. De aandelen van je portefeuille worden ingelezen via een tekstbestand. Figuur 1 toont de regels van dit bestand:
NASDAQ;NFLX;447.77;15 NASDAQ;AMZN;2640.98;3 NASDAQ;AAPL;351.59;10 NASDAQ;TSLA;991.79;5 NASDAQ;MSFT;194.24;6 NYSE;DIS;117.65;3 NYSE;BAC;25.00;100 NYSE;JPM;99.45;15 NYSE;WMT;119.03;23 NYSE;T;30.25;45
Het project bevat twee klassen. De klasse FileReader leest bij het instantiëren een tekstbestand met een portefeuille volgens het eerder beschreven formaat in (default is dat het bestand “portefeuille.txt”). De interface van de klasse biedt volgende methoden aan:
has_next
: Geeft True of False terug, afhankelijk van of er nog aandelendata ingelezen kunnen worden;next
: Leest de data (markt, ticker, prijs en hoeveelheid) van een aandeel in. Deze data worden teruggeven onder de vorm van een AandeelData object;remove
: In principe kunnen met deze opdracht de gegevens van een aandeel uit het tekstbestand verwijderd worden – deze opdracht is echter niet toegelaten;reset
: Met deze opdracht kan opnieuw begonnen worden met het inlezen van het bestand (m.a.w. de iterator verwijst terug naar de gegevens van de het eerste aandeel in het bestand);Zoals onderstaande figuur toont maakt FileReader gebruik van de klasse AandeelData. Elk object van deze laatste klasse stelt de gegevens van één aandeel voor. De klasse heeft volgende methoden:
get_markt
: Geeft de marktnaam van het aandeel, als een string. Het resultaat is case-sensitive.get_ticker
: Geeft de Ticker van het aandeel terug, als een string. Het resultaat is case-sensitive.get_prijs
: Geeft de prijs van het aandeel terug, als een float.get_aantal
: Geeft het aantal aandelen terug, als een int.create_key
: Een static methode die op basis van de markt en de ticker een unieke sleutel retourneert van de vorm [markt]-[ticker]. Het resultaat is case-sensitive. Dus bijvoorbeeld voor het aandeel NFLXop de markt NASDAQ zal de key NASDAQ-NFLX aangemaakt worden.
Via 10 methodes gaan we aan de klasse AandelenPortefeuille eenvoudige beheerstaken voor een Aandelen portefeuille toevoegen.
Creëer een klasse AandelenPortefeuille.
Voeg een constructor zonder parameters toe aan de klasse AandelenPortefeuille. Deze constructor zal eerst een nieuw FileReader-object reader
en een dictionary portefeuille_map
initialiseren als instantievariabelen. Vervolgens zal het de reader gebruiken om de AandeelData-items een voor een toe te voegen aan het portefeuille_map dictionary. De key wordt aangemaakt via de static methode create_key van de klasse AandeelData.
Voeg een publieke methode aandeel_aanwezig
toe met als parameters een string markt
en een string ticker
. Indien het aandeel aanwezig is in de instantievariabele portefeuille_map retourneert de methode True
, indien niet False
. Je kan bepalen of een aandeel aanwezig is door te kijken naar de key van de portefeuille_map instantievariabele.
Voeg een publieke methode toevoegen_aandeel
toe met als parameter een AandeelData-object. Dit object mag enkel worden toegevoegd indien dit aandeel nog niet aanwezig is in de portefeuille. Indien het aandeel kon worden toegevoegd, retourneert de methode True
, indien niet False
.
Voeg een publieke methode aanpassen_aandeel
toe met als parameters een string markt
, een string ticker
, een float prijs
en een int aantal
. De methode zal de prijs en aantal van een aandeel aanpassen indien dit aandeel aanwezig is de portefeuille_map collectie. Indien het aandeel niet aanwezig is in de collectie wordt niets aangepast.
Voeg een publieke methode waarde_aandeel
toe met als parameter een string markt
en een string ticker
. De methode zal de waarde van een aandeel retourneren als float op basis van de prijs en de hoeveelheid. Indien het aandeel niet aanwezig is in de collectie, retourneert de methode 0.
Voeg een publieke methode totale_waarde
toe. De methode zal de totale waarde van de portefeuille retourneren als float.
Voeg een publieke methode get_aandelen_markt
toe met als parameter een marktcode als string. Deze methode retourneert een lijst met AandeelData objecten die genoteerd staan op de Markt die overeenstemt met de gegeven parameter. Indien de markt niet bestaat wordt een lege lijst geretourneerd.
Voeg een publieke methode get_kleinste_aandeel
toe. Deze methode retourneert de sleutel (markt-aandeel) van het aandeel met de laagste waarde (prijs * hoeveelheid).
Voeg een publieke methode rapport
toe. Deze methode print een rapport in de console van de volgende vorm:
Portefeuille ---------------- NYSE T 30.25 45 NASDAQ AMZN 2640.98 3 NYSE DIS 117.65 3 NYSE WMT 119.03 23 NASDAQ NFLX 447.77 15 NASDAQ MSFT 194.24 6 NYSE JPM 99.45 15 NASDAQ TSLA 991.79 5 NYSE BAC 25.0 100 NASDAQ AAPL 351.59 10 TOTALE WAARDE: 32723.42