Skip to content
Snippets Groups Projects
Commit 2ad52989 authored by Antoine HUGUET's avatar Antoine HUGUET
Browse files

Fin de formation

parent ed87235e
No related branches found
No related tags found
No related merge requests found
class Table():
def __init__(self,x_pos,y_pos):
self.couleur = '0a0a2a'
self.objets=[]
self.x_pos = x_pos
self.y_pos = y_pos
self.forme = 'rectangle'
self.orientation = (1,0) #dx,dy
self.matiere = 'bois'
def tourner_la_table(self,new_orientation):
(dx,dy)=new_orientation
if dx in [-1,0,+1] and dy in [-1,0,+1] and dx*dy!=0:
self.orientation = (dx,dy)
def bouger_la_table(self,x_pos,y_pos):
if type(x_pos)==type(0) and type(y_pos)==type(0):
self.x_pos = x_pos
self.y_pos = y_pos
else:
raise Exception ("Invalid coordinates")
table=Table(5,5)
table.bouger_la_table('aa',-5)
print(table.x_pos,table.y_pos)
...@@ -8,13 +8,19 @@ On va prendre un objet concret, du monde réel : une **table**. ...@@ -8,13 +8,19 @@ On va prendre un objet concret, du monde réel : une **table**.
### Quels attributs ? ### Quels attributs ?
- - dimension
- - liste des objets dessus
- matière
- position
- forme
- orientation
### Quelles méthodes ? ### Quelles méthodes ?
- - bouger la table
- - tourner la table
### Que va t'on faire dans le constructeur ? ### Que va t'on faire dans le constructeur ?
......
import numpy as np
class Complexe():
def __init__(self,re,im):
self.re = re
self.im = im
self.mod = np.sqrt(self.re**2+self.im**2)
self.arg=0.0
self.calculer_arg()
def calculer_arg(self):
if self.re==0:
self.arg = -np.pi
else:
self.arg = np.arctan(self.im/self.re)
def tourner(self,theta):
if type(theta)==type(0.0):
self.arg+=theta
while self.arg < 0:
self.arg+=np.pi*2
while self.arg >= np.pi*2:
self.arg-=np.pi*2
self.re=self.mod*np.cos(self.arg)
self.im=self.mod*np.sin(self.arg)
def __str__(self):
string = ""
if self.re != 0:
string+=str(self.re)
if self.re !=0 and self.im!=0:
string+="+"
if self.im!=0:
string+=(str(self.im)+'i')
return string
i=Complexe(0,1)
j=Complexe(-1/2,np.sqrt(3)/2)
print(i)
...@@ -8,13 +8,16 @@ Nous allons prendre un objet beaucoup plus abstrait, mais que l'on connaît tous ...@@ -8,13 +8,16 @@ Nous allons prendre un objet beaucoup plus abstrait, mais que l'on connaît tous
### Quels attributs ? ### Quels attributs ?
- - re
- - im
- arg
- module
### Quelles méthodes ? ### Quelles méthodes ?
- - ajouter un angle
- - conjugué
### Que va t'on faire dans le constructeur ? ### Que va t'on faire dans le constructeur ?
......
class Meuble():
def __init__(self,x_pos,y_pos):
self.couleur = '0a0a2a'
self.x_pos = x_pos
self.y_pos = y_pos
self.forme = 'rectangle'
self.orientation = (1,0) #dx,dy
self.matiere = 'bois'
self.attributs_special_heritage()
def attributs_special_heritage(self):
pass
def tourner(self,new_orientation):
(dx,dy)=new_orientation
if dx in [-1,0,+1] and dy in [-1,0,+1] and dx*dy!=0:
self.orientation = (dx,dy)
def bouger(self,x_pos,y_pos):
if type(x_pos)==type(0) and type(y_pos)==type(0):
self.x_pos = x_pos
self.y_pos = y_pos
else:
raise Exception ("Invalid coordinates")
class Table(Meuble):
def attributs_special_heritage(self):
self.objets=[]
self.descente_n_plus_1()
def descente_n_plus_1(self):
pass
class Table_Ext(Table):
def descente_n_plus_1(self):
self.parasol=True
class Lit(Meuble):
def attributs_special_heritage(self):
self.occupe=False
table_ext=Table_Ext(5,5)
print(table_ext.parasol)
\ No newline at end of file
import numpy as np
class Graphe():
def __init__(self,n):
self.__n = n
self.__array = np.zeros((self.__n,self.__n))
def n(self):
return self.__n
def set_n(self,n):
if n<self.__n:
self.__array = self.__array[:n,:n]
self.__n=n
def set_link(self,i,j,value=1,sym=True):
try:
self.__array[i,j]=value
if sym:
self.__array[j,i]=value
except:
pass
g=Graphe(5)
g.set_n(3)
g.set_link(10,10)
# Une quatirème implémentation
On va réaliser l'implémentation d'un second objet en Python, pour découvrir de nouvelles fonctionnalités, et de nouveaux raisonnement.
### Choix de l'objet
On prend encore un degrés d'abstraction supplémentaire : un **graphe**. De nouvelles questions se posent.
### Une nouveauté : réfléchir à l'implémentation
On doit maintenant réfléchir à **l'interface** et à **l'implémentation** :
- Liste d'adjacence
- Matrice d'adjacence
- ...
### Quels attributs ?
- Matrice d'adjacence -> privé
- taille du graphe-> privé
-
### Quelles méthodes ?
- is_connexe
- rajouter un lien(symétrique ou non)
- rupture d'un lien (symétrique ou non)
- modifier la taille
### Que va t'on faire dans le constructeur ?
- Initialiser les attributs
-
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment