Skip to content
Andreea Dima edited this page Sep 21, 2017 · 1 revision

Tema 2

  1. Creează clasa BookStore care primește la inițializare un URL către un document XML cu acest format. Această clasă va avea atributul books - o listă de obiecte Book, cu următoarele atribute: title, author, publisher, language, isbn, quantity, pages, price, publication_date, category ale căror valori sunt preluate din sursa de date și convertite la tipul de date corespunzător.

  2. Implementează metoda search care va căuta un substring în titlurile cărților din librărie și va returna prima carte care corespunde căutării sau None dacă nu a găsit niciun rezultat. Această metodă va funcționa în 2 variante, case-sensitive și non-case-sensitive.

  3. Implementează metoda buy care primește ca parametri o carte și cantitatea. Aceasta va returna prețul final al tranzacției și va micșora stocul pentru cartea respectivă.

  4. Implementează metoda order_by care va reordona (in place) cărțile din librărie după orice atribut al unei cărți.

  5. Implementează proprietatea total_cost care returnează costul total al cărților din librărie.

  6. Adaugă atributul categories pe clasa BookStore, care va fi un dicționar de forma {code: description}. Implementează proprietatea categories_count care returnează un dicționar de forma {category_description: number_of_books_in_that_category}.

  7. Ce neajunsuri crezi că are implementarea propusă? Cum ai fi modelat librăria, pornind de la documentul XML dat?

  8. Cât timp ți-a luat această temă? Care a fost dificultatea ei? Care puncte ți-au dat bătăi de cap?

Observații

  • Ultimele două exerciții sunt parte din temă și răspunsurile se punctează. Nu sunt opționale!
  • Folosește șablonul pus la dispoziție și fă toate testele să treacă, fără a le modifica.
  • Amintește-ți subiectele discutate la cursul Noțiuni specifice Python, îți vor fi de folos pentru această temă.
  • Nu uita de PEP8!