Desde «hola mundo» a conexiones con Bases de datos

Slides:



Advertisements
Presentaciones similares
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Advertisements

Diagrama de Clases SPI 2016.
ELO-329: Diseño y Programación Orientados a Objetos1 Conceptos ELO329: Diseño y Programación Orientados a Objetos.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
Flujos de datos Un flujo es un canal por donde fluyen los datos.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento y constructores.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Herencia Multiple en Java
Clases y Objetos en Java
ELO329: Diseño y Programación Orientados a Objetos
Unidad Didáctica 11 Reutilización Versión 1.0.0
Clases y Objetos.
Herencia y Clases Abstractas Reutilización de código y código genérico
Taller de Java Universidad de los Andes
Clases y Objetos.
Herencia y Clases Abstractas
Programación orientada a objetos
Herencia Implementación en Java.
Polimorfismo y Funciones Virtuales
Programación Orientada a Objetos
Figura Rectangulo Elipse Cuadrado Circulo area (): double
Fundamentos de la programación orientada a objetos
AYUDANTÍA 6 Más sobre... ¿Faiton?.
Clases y Objetos en Java
Introducción a programación web Martin Esses
Nociones básicas sobre C++
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
PSEUDOCÓDIGO Prof. Rafael Mourglia.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Programación orientada a objetos
Manejo de Excepciones Agustín J. González ELO329.
Clases y Objetos en Java
Polimorfismo y Métodos Virtuales
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia Agustín J. González ELO329.
Herencia en C#.
Desarrollo de Software
HERENCIA.
Manejo de Excepciones Agustín J. González ELO329.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
HISTORIA El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el.
Plantillas (Templates)‏
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Universidad Nacional de Colombia - Leguajes de Programación
Procesamiento de señales Introducción a Matlab 2014
Programación orientada a objetos en Visual Basic .NET
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Programacion Orientada a Objetos
Herencia en C++ Agustín J. González ELO329.
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
CC 1002: Introducción a la Programación Clase 22
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
Manejo de Punteros y objetos en memoria dinámica en C++
CC 1002: Introducción a la Programación Clase 19
PROGRAMACIÓN ORIENTADA A OBJETOS ING. HEMERSON VILLACORTA M.
Manejo de Excepciones en C++
Herencia en C++ Agustín J. González ELO329.
Herencia en C++ Agustín J. González ELO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Prof. Marcos Heredia.  Primitivos y No Primitivos.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Templates (en español: Pantillas, modelos, patrones)‏
Herencia Agustín J. González ELO329.
Herencia en C++ Agustín J. González ELO329.
Clases y Objetos en Java
Transcripción de la presentación:

Desde «hola mundo» a conexiones con Bases de datos

Clases

Objetos y Clases Las clases permiten que podamos definir nuestros propios tipos de datos Las Clases definen las propiedases (atributos) y las capacidades y comportamiento (métodos) general de los nuevos tipos Un objeto se crea o instancia a partir de una clase

Objetos Un objeto es una variable que representa un caso particular dentro del conjunto de posibles instancias de una clase De la misma forma que podemos considerar al número 7 como una instancia particular de la clase Numeros Enteros

Creación de clases Palabra reservada class La clase más sencilla que podemos pensar es: >>> class X: ... pass >>> Instanciamos un objeto usando el nombre de la clase como si fuera una función: >>> x = X() >>> print(x)

La clase Point Inicializador: Método con el nombre especial __init__ No es el constructor, pero casi class Point: def __init__(self, lat, lng): self.latitud = lat self.longitud = lng x = Point(28.4779, -16.3118) print(x.latitud, x.longitud)

¿self? Se crea el objeto. Inmediatamente a continuación, como hemos visto, se llama al inicializador los dos parámetros que usamos al crear al objeto son los mismos valores que se pasan al método inicializador con los nombres lat y lng Pero ¿De donde sale el primer parámetro, self? ¿Y qué representa?

Para programadores de C++ o Java Para programadores de C++ o Java es la variable "magica" this. En Python se prefirió esta forma por considerarla más explicita. De igual manera, los atributos dentro de la función tienen que venir precedidos por el self., no hay alias mágicos para los atributos de la instancia, para evitar la ambigüedad.

Seguimos con self Empezemos por la segunda pregunta: self representa al propio objeto recien creado Este primer parámetro es lo que diferencia a las funciones que ya conociamos de los métodos: un método siempre tienen como primer parámetro la instancia sobre la que está siendo ejecutado.

Quien pone self ahí Al definir métodos para una clase, hay que reservar el primer parámetro para el propio objeto Al llamar al método desde la instancia, Python ya se ocupa de poner el valor correcto como primer parámetro La tradición y la costumbre marcan que este primer parámetro se llame self, pero en realidad no existe obligación de hacerlo (pero es conveniente hacerlo, por legibilidad)

Herencia Para poder hablar de clases y objetos con propidad es necesario que haya algún tipo de herencia La herencia nos permite definir una clase a base de refinar o modificar otra (herencia simple) u otras (herencia múltiple)

Herencia simple Si una clase A deriva o hereda de una clase B (o también se dice que la clase B es una superclase de A): Entonces la clase A dispondrá, de entrada, de todos los atributos y métodos de B Pero puede añadir más atributos y métodos e incluso modificar o borrar los que ha heredado.

Como declarar herencia en Python La forma de expresar esta herencia en python es >>> class A(B): ... pass Si la clase modifique un método que ha heredado, se dice que ha reescrito o sobreescrito (override) el método.

Características de la herencia Como los objetos instanciados de A tienen los mismos atributos y métodos que B, deben poder ser ser usados en cualquier sitio donde se use una instacia de B Entre A y B hay una relación es un tipo de B es un caso general de A O,si se prefiere, A es una especializacion de B

Beneficios de usar clases/objetos Reducir el tamaño del código evitando repeticiones Si organizamos las herencias correctamente en jerarquias, de mas genéricas a más específicas, podemos compatibilizar el código común de las primeras con el más específico de las últimas Encapsulamiento Polimorfismo Delegación de responsabilidades

super ¿Que pasa si A sobreescribe un método de B, pero aun así ha de invocarlo? En realidad es un caso muy común, A quiere hacer lo mismo que B, y un poquito más. Desde Python 2.2 hay una función super() que nos ayuda a invocar el código de la clase (o clases) de la que derivamos. Python 2.x Python 3.x class A(B): def f(self, arg): super(A, self).f(arg) ... class A(B): def f(self, arg): super().f(arg)

Funciones auxiliares isinstance(objeto, clase) nos devolverá verdadero si el objeto es una instancia de una clase en particular, o de alguna de sus subclases issubclass(objeto, clase) nos devolverá verdadero si el objeto es una instancia de una subclase de la clase indicada.

Sobrecarga de operadores Se puede, como en C++, sobreescribir los operadores (operadores aritméticos, acceso por índices, etc...) mediante una sintaxis especial Los métodos y atributos que empiezan y acaban con un doble signo de subrayado tiene por lo general un significado especial.

Sobrecarga de operadores: len Si en nuestra clase definimos un método __len__(), podemos hacer que las instancias de esa clase puedan ser usadas con la función len() Véase ejemplos/clases_02.py

Sobrecarga de operadores: índices Si a una clase le añadimos los métodos __setitem__ y __getitem__ podemos hacer que se comporte como si fuera una contenedor accesible mediante las operaciones de índices

def __getitem__(self, index): if 0 <= index < 7: Ejemplos/clases_03.py class A: _Tabla = { 0: 'ninguno', 1: 'uno', 2: 'dos', 3: 'tres', 4: 'cuatro', 5: 'cinco', 6: 'umm... seis', } def __len__(self): return 7 # por la cara def __getitem__(self, index): if 0 <= index < 7: return self._Tabla[index] else: return 'Muchos' def __setitem__(self, index, value): pass

Sobrecarga de operadores: +/- Supongamos que queremos escribir un módulo de álgebra lineal y que definimos la clase Vector Podríamos crear una función independiente para sumar vectores: v1 = Vector(2, 3) v2 = Vector(-4, 2) v3 = suma_vector(v1, v2) Pero es claramente mejor, más legible y bonito, poder hacer v3 = v1 + v2

def __init__(self, x, y): self.x = x self.y = y def __str__(self): ejemplos/clases_04.py class Vector: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return 'Vector({}, {})'.format(self.x, self.y) def __add__(self, other): return Vector( self.x + other.x, self.y + other.y ) def __sub__(self, other): self.x - other.x, self.y - other.y

Sobrecarga de operadores: +/- Para eso definimos los métodos especiales __add__ y __sub__ para definir el comportamiento cuando se sumen o resten dos instancias de nuesta clase. Véase ejemplos/clases_04.py Existen muchos métodos especiales A Guide to Python's Magic Methods: http://www.rafekettler.com/magicmethods.html

Conexion y trabajo con Postgresql

Breve reseña sobre el Framework Django