Poo básica
Diseño Orientado a Objetos
Indice
●
Principios
generales
de
diseño
●
Programacion Orientada a objetos en python Principios de Diseño orientado a objetos Diseño de patrones
●
●
Principios generales de diseño
Principios generales de diseño
●
El diseño de software es un proceso de interminable aprendizaje
●
LO que realmente cuenta es lamotivacion que tienes para mejorar tu codigo .
Principios generales de diseño
●
Buen diseño de software Escribir software es como escribir en prosa, no es solo acerca de la informacion, sino tambien del estilo. Vamos a generales:
● ●
empezar
con
dos
principios
Debe ser sencillo No reinventar la rueda
Programacion Orientada a objetos en python
Programacion Orientada aobjetos
●
Objetos Combina estados (data) y comportamiento (algoritmos) Encapsulacion Los objetos deciden que muestran (exponen) al mundo exterior (Por su interfaz publica) y oculta los detalles de su implementacion para proveer abstraccion.La abstraccion no presenta “fugas” en la implementacion .
●
Programacion Orientada a objetos
●
Clases (En OO Clasica) Define que es comun para todauna clase de objetos.Ejemplo: “Snowy es un perro” que se puede traducir como “El objeto Snowy es una instancia de la clase perro” .Definir una vez como funciona la clase perro y volver a utilizarlos para todos los perros .
Programacion Orientada a objetos
●
Herencia Un perro (Clase) es un mamifero (Clase Padre/SuperClase). Una subclase se deriva (se extiende) de una clase padre.Se vuelve autilizar y se extiende , y puede reemplazar las piezas que necesitan especializacion. Principio de sustitucion de Liskov Lo que funciona para la clase mamiferos tambien debe funcionar para la clase perro
(http://www.objectmentor.com/resources/articles/lsp.pdf )
Programacion Orientada a objetos
●
Polimorfismo Proporciona un camino comun de uso para diferentes clases.comportamientosdiferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. Ejemplo : El operador + para reales y complejos .
Python : POO BASICO
●
En Python todo es un objeto, y una clase siempre hereda del objeto object. Una clase se define mediante:
class nombre_clase(object):Python : POO BASICO
●
Normalmente una clase tiene atributos y métodos. En Python, un atributo se puede declarar en cualquier sitio, aunque lo propio sería en el método __init__, que aunque no es el constructor, sí que es el sitio donde habría que poner el código que ejecutaría el constructor.
Python : POO BASICO
●
Todas las clases derivan de un objeto:
class Dog(object): Pass
●
Losobjetos de python tienen datos y atributos de funciones :
class Dog(object): def bark(self): print "Wuff!" snowy = Dog() snowy.bark() snowy.a = 1
El primer argumento (self) es obligatorio para esta instancia Dog
Añadimos un atributo a la clase Dog llamada snowy
Python : POO BASICO
●
Los atributos de datos se definen en __init__ : class Dataset(object):
def __init__(self):
self.data= None
def store_data(self, raw_data):
... # process the data self.data = processed_data
Python : POO BASICO
●
Los metodos especiales inician y terminan con dos underlines :
class My2Vector(object): def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): return My2Vector(self.x+other.x, self.y+other.y) v1 = My2Vector(1, 2) v2 = My2Vector(3, 2) v3 = v1 + v2Python : POO BASICO
class Coche: """Abstraccion de los objetos coche.""" def __init__(self, gasolina): self.gasolina = gasolina print "Tenemos", gasolina, "litros" def arrancar(self): if self.gasolina > 0: print "Arranca" else: print "No arranca..." def conducir(self): if self.gasolina > 0: self.gasolina -= 1 print "Quedan", self.gasolina, "litros" else: print "No se mueve..."
carro = Coche(2)...
Regístrate para leer el documento completo.