Commit 2ad52989 authored by Antoine HUGUET's avatar Antoine HUGUET
Browse files

Fin de formation

parent ed87235e
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,15 +8,21 @@ On va prendre un objet concret, du monde réel : une **table**.
### Quels attributs ?
-
-
- dimension
- liste des objets dessus
- matière
- position
- forme
- orientation
### Quelles méthodes ?
-
-
- bouger la table
- tourner la table
### Que va t'on faire dans le constructeur ?
- Initialiser les attributs
-
\ No newline at end of file
-
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
### Quels attributs ?
-
-
- re
- im
- arg
- module
### Quelles méthodes ?
-
-
- ajouter un angle
- conjugué
### 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
-
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment