Search
Vaším úkolem je vytvořit jednoduchou databázi (dále jen db) aut. K implementaci použijte spojový seznam. Databáze aut má metodu na její vytvoření z předem definovaného pole, metodu na vložení automobilu do db, metodu na úpravu názvu již vloženého automobilu, metodu na úpravu značky již vloženého automobilu a metodu na změny stavu již vloženého automobilu. Pro zjednodušení není umožňěno měnit cenu automobilu. Dále databáze disponuje metodou, která umí vypočítat celkovou hodnotu aut v showroomu. Databáze má také metodu, která vrátí hlavičku spojového seznamu, spojový seznam samotný a metodu, která databázi vymaže. Více informací o metodách níže.
Pro databázi platí následující omezení: V db nejsou žádná ID vícekrát. V db jsou záznamy vždy seřazeny podle ceny od nejnižší po nejvyšší a to v pořadí v jakém byly vkládány.
Pro spojový seznam platí následující omezení: Každý uzel vidí na svého předka a na svého následníka. V každém uzlu jsou uložena všechna data o konkrétním automobilu.
Vytvořte třídu showroom.py, která bude obsahovat níže specifikované třídy a metody.
showroom.py
Třída Car má následující atributy: identification, name, brand, price, active:
Car
identification
name
brand
price
active
int
string
boolean
Instance třídy Car představují data, jež jsou uložena v každém uzlu (tj. Node).
Node
Třída Node reprezentuje uzel ve spojovém seznamu. V našem případě má následující proměnné: nextNode, prevNode, data. Níže je popis jednotlivých proměnných:
nextNode
prevNode
data
None
V případě posledního uzlu ve spojovém seznamu je hodnota nextNode = None, v případě prvního uzlu ve spojovém seznamu je hodnota prevNode = None, v případě jednoprvkového seznamu je v proměných hlavy (head) spojového seznamu hodnota nextNode = prevNode = None. V případě prázdného spojového seznamu je hodnota hlavy None.
nextNode = None
prevNode = None
head
nextNode = prevNode = None
Třída LinkedList reprezentuje spojový seznam a drží si hlavičku (head) spojového seznamu, pomocí které lze projít celý spojový seznam, to jest prohledat db. Tato třída může obsahovat i metody, které pracují se spojovým seznamem. Spojový seznam tedy implementujete jako třídu s vlastnimi atributy, ale metody pro obsluhu db můžete rovnou implementovat jako prosté funkce v souboru showroom.py.
LinkedList
Níže je seznam funkcí, které musí databáze poskytovat (očekáváme je v souboru showroom.py), včetně jejich definice a popisu.
init(cars)
getDatabase()
getDatabaseHead()
clean()
add(car)
updateName(identification, name)
updateBrand(identification, brand)
activateCar(identification)
active = True
deactivateCar(identification)
active = False
calculateCarPrice()
active == True
updateName()
updateBrand()
activateCar()
deactivateCar()
init()
add()
Za úlohu je možné získat 7 bodů. 4 body jsou za správné vytvoření spojového seznamu metodou init(), za správnou implementaci metody clean() a za správné implementace metod, které vrací spojový seznam a jeho hlavičku: getDatabase(), getDatabaseHead(). Zbývající 3 body jsou za správnou implementaci ostatních metod nad spojovým seznamem.