Merge remote-tracking branch 'origin/master'
Conflicts: src/m/test/testCamera.py
This commit is contained in:
75
src/m/Parking.py
Normal file
75
src/m/Parking.py
Normal file
@ -0,0 +1,75 @@
|
||||
__author__ = 'sidya'
|
||||
|
||||
from src.m.Place import Place, ListeTypePlace
|
||||
|
||||
|
||||
class Parking:
|
||||
"""
|
||||
Definie un parking
|
||||
"""
|
||||
def __init__(self, nbNiv, typePlacesParNiv,nom):
|
||||
self.__nom = nom
|
||||
self.__nbPlacesParNiveau = typePlacesParNiv.nbPlaceTotal
|
||||
self.__prix = 10
|
||||
self.__nbNiveaux = nbNiv
|
||||
self.__Places = {}
|
||||
for n in range(0, nbNiv):
|
||||
l = []
|
||||
for t in typePlacesParNiv.liste:
|
||||
for i in range(0, t.nb):
|
||||
l.append(Place(i + 1, n, t.longueur, t.hauteur))
|
||||
self.__Places[n] = l
|
||||
|
||||
@property
|
||||
def nom(self):
|
||||
return self.__nom
|
||||
|
||||
@property
|
||||
def nbPlacesParNiveau(self):
|
||||
return self.__nbPlacesParNiveau
|
||||
|
||||
@property
|
||||
def nbNiveau(self):
|
||||
return self.__nbNiveaux
|
||||
|
||||
def recherchePlace(self, voiture):
|
||||
place = None
|
||||
for i in range(0, self.__nbNiveaux):
|
||||
if place != None:
|
||||
break
|
||||
l = [p for p in self.__Places[i].estLibre]
|
||||
for p in l:
|
||||
if p.dimValide(voiture.hauteur, voiture.longueur):
|
||||
pass
|
||||
place = p
|
||||
break
|
||||
return place
|
||||
|
||||
def nbPlacesLibresNiveau(self, niveau):
|
||||
i = 0
|
||||
for p in self.__Places[niveau]:
|
||||
if p.estLibre:
|
||||
i += 1
|
||||
return i
|
||||
|
||||
@property
|
||||
def nbPlacesLibresParking(self):
|
||||
nbP = 0
|
||||
for i in range(0,self.__nbNiveaux) :
|
||||
nbP += self.nbPlacesLibresNiveau(i)
|
||||
return nbP
|
||||
|
||||
def addAbonnement(self, Abonnement):
|
||||
pass
|
||||
|
||||
def __str__(self):
|
||||
return "Parking : niveau : " + str(self.__nbNiveaux)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
l = ListeTypePlace()
|
||||
l.add(10, 11, 5)
|
||||
l.add(7, 12, 5)
|
||||
p = Parking(5, l)
|
||||
print(p)
|
||||
print(p.nbPlacesLibresNiveau(1))
|
103
src/m/Place.py
Normal file
103
src/m/Place.py
Normal file
@ -0,0 +1,103 @@
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
__author__ = 'sidya'
|
||||
|
||||
|
||||
class Place:
|
||||
"""
|
||||
Representation d'une place dans un parking
|
||||
"""
|
||||
def __init__(self, numero, niveau, longueur, hauteur):
|
||||
self.__numero = numero
|
||||
self.__niveau = niveau
|
||||
self.__longueur = longueur
|
||||
self.__hauteur = hauteur
|
||||
self.__estLibre = True
|
||||
self.__estReserver = False
|
||||
self.__Placement = None
|
||||
@property
|
||||
def estLibre(self):
|
||||
return self.__estLibre
|
||||
|
||||
@property
|
||||
def estReserver(self):
|
||||
return self.__estReserver
|
||||
|
||||
def dimValide(self, h, l):
|
||||
return h < self.__hauteur and l < self.__longueur
|
||||
|
||||
def reserver(self):
|
||||
if (self.__estReserver == True) :
|
||||
raise Exception("Place déjà reservé")
|
||||
self.__estReserver = True
|
||||
|
||||
def nonReserver(self) :
|
||||
if (self.__estReserver == False):
|
||||
raise Exception("Impossible de mettre une place en non si elle n'est pas reservé de base")
|
||||
self.__estReserver = False
|
||||
|
||||
def prendre(self, Placement):
|
||||
if (self.__Libre == True) :
|
||||
raise Exception("Place déjà prise")
|
||||
self.__estLibre = False
|
||||
self.__Placement = Placement
|
||||
|
||||
def liberer(self) :
|
||||
if (self.__estLibre == False):
|
||||
raise Exception("Impossible de liberer une place vide")
|
||||
self.__estLibre = True
|
||||
|
||||
|
||||
class TypePlace:
|
||||
"""
|
||||
Classe qui permet de définir un type de place
|
||||
"""
|
||||
def __init__(self, h, l, nb):
|
||||
self.__hauteur = h
|
||||
self.__longueur = l
|
||||
self.__nb = nb
|
||||
|
||||
@property
|
||||
def hauteur(self):
|
||||
return self.__hauteur
|
||||
|
||||
@property
|
||||
def longueur(self):
|
||||
return self.__longueur
|
||||
|
||||
@property
|
||||
def nb(self):
|
||||
return self.__nb
|
||||
|
||||
|
||||
class ListeTypePlace:
|
||||
"""
|
||||
Classe qui permet de définir une liste de type de place par niveau pour la création d'un parking
|
||||
"""
|
||||
def __init__(self):
|
||||
self.l = []
|
||||
|
||||
def add(self, h, l, nb):
|
||||
self.l.append(TypePlace(h, l, nb))
|
||||
|
||||
@property
|
||||
def nbPlaceTotal(self):
|
||||
i = 0
|
||||
for t in self.l:
|
||||
i += t.nb
|
||||
return i
|
||||
|
||||
@property
|
||||
def liste(self):
|
||||
return self.l
|
||||
|
||||
|
||||
class Placement:
|
||||
def __init__(self,debut,fin):
|
||||
self.debut = debut
|
||||
self.fin = fin
|
||||
|
||||
@property
|
||||
def estEnCours(self):
|
||||
return datetime.datetime < self.fin
|
4
src/m/test/TestParking.py
Normal file
4
src/m/test/TestParking.py
Normal file
@ -0,0 +1,4 @@
|
||||
__author__ = 'sidya'
|
||||
|
||||
class TestParking :
|
||||
pass
|
@ -1,5 +1,5 @@
|
||||
__author__ = 'sidya'
|
||||
|
||||
|
||||
class Camera:
|
||||
class TestPlace :
|
||||
pass
|
@ -1,10 +0,0 @@
|
||||
from src.m.camera import Camera
|
||||
|
||||
__author__ = 'sidya'
|
||||
|
||||
import nose
|
||||
class testCamera :
|
||||
|
||||
def testTailleMax(self):
|
||||
c = Camera()
|
||||
assert (c.capturerHauteur()>1.5)
|
Reference in New Issue
Block a user