Giter VIP home page Giter VIP logo

a3-s2-asc-t1-marketplace's Introduction

# Tema 1

Organizare
-
***Sumar***

Tema se bazează pe o implementare a cazului Multiple Producers Multiple
Consumers. Aici, marketplace-ul are rolul de a face legătura dintre aceștia,
ținând cont de numărul de produse pentru a limita activitatea producătorilor,
și punând la dispoziție aceste produse pentru consumatori.

***Producer***

Producătorii creează în continuu, după o listă inițializată la pornirea
programului, produse noi, cu scopul de a fi trimise către marketplace.
Între fiecare trimitere se așteaptă un anumit interval, în funcție de
starea marketplace-ului (dacă posedă prea multe produse de la acest
producător sau nu).

***Consumer***

Consumatorii operează pe sesiuni de cumpărături. Fiecare sesiune
începe prin obținerea unui cărucior în care să stocheze produsele
alese. Consumatorul urmărește o listă, luând produse din marketplace
dacă acestea există. În caz contrar, consumatorul așteaptă un interval
prestabilit, în speranța că produsul dorit va intra pe stoc.

Consumatorul se poate răzgândi și returna un produs, acesta devenind
disponibil pentru un alt consumator.

Sesiunea de cumpărături se încheie în momentul în care consumatorul
plasează comanda, astfel păstrând în mod permanent produsele alese.

Într-un fel, consumatorii sunt și producători pentru marketplace, întrucât
aceștia au opțiunea de a pune la loc un produs din marketplace, astfel
contribuind la umplerea acestuia.

***Marketplace***

În cadrul modului folosesc un Type Alias ``ProductInfo`` pentru a asocia
un produs cu producătorul lui.

***Utilitatea temei***

Consider că tema este utilă pentru familiarizarea cu limbajul Python, întrucât
la APD se învață la mod general concepte de multithreading.

***Eficiența temei***

Consider că implementarea mea este una eficientă. Pentru a optimiza și mai
mult, unele dicționare pot fi transformate în liste, folosind indexul drept
cheie.

***Cazuri speciale***

Am acoperit și unele cazuri care nu sunt acoperite în teste, precum
o operație invalidă pentru consumator
(``Consumer.attempt_operation() | Linia 87``)
sau returnarea unui produs inexistent în cărucior
(``Marketplace.remove_from_cart() | Linia 164``).

Implementare
-
Tema implementează întregul enunț, obținând punctaj maxim pe teste.

Sunt prezente funcționalități extra precum verificarea operațiilor
valide pentru consumatori, menționate anterior.

Consider că orice fișier README existent în repository ar fi trebuit,
de fapt, introdus în enunțul temei, pentru a avea toate informațiile
necesare realizării acesteia într-un singur loc.

Tema m-a ajutat să înțeleg care sunt operațiile atomice built-in în
python (``list.append()``, introducerea în dicționar ``D[x] = y`` etc.)

Resurse utilizate
-
Operații atomice în Python:
https://docs.python.org/3/faq/library.html#what-kinds-of-global-value-mutation-are-thread-safe

Git
-
https://github.com/RaresPRT/Tema1-ASC

a3-s2-asc-t1-marketplace's People

Contributors

cofiprt avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.