POO Programación Orientada a Objetos

Post on 13-Jun-2015

3.790 views 7 download

description

Programación Orientada a Objetos

Transcript of POO Programación Orientada a Objetos

PROGRAMACIÓN ORIENTADA OBJETOS

OP OObjective-C

PUERTAHasta ahora la programación era de flujo: PROGRAMACIÓN ESTRUCTURADA

Ahora programamos tal y como expresaríamos las cosas en la vida real.

La POO nos permite pensar en la programación de manera similar a como lo hacemos en la vida diaria.

PUERTAAllá donde estéis ¿tenéis una puerta cerca?

Que funciones hace: abrir y cerrar (MÉTODOS)

Que tipo de puerta es: blindada, marrón, acristalada,... (PROPIEDADES o ATRIBUTOS)

PParadigma de la programación

Cuando hablamos de PARADIGMA:

Es la manera de pensar SUBJETIVA del programador.

El mismo programa puede tener tantas versiones como programadores lo hagan, diferente según el programador.

PSi encargamos una puerta a dos carpinteros distintos, cada uno nos dará un presupuesto y una solución diferente.

PTodo es según el cristal con que se mire.

¿Significa que puedo hacer lo que quiera con el código?

PObviamente NO, aunque la curva de aprendizaje inicialmente es complicada, conviene prestar atención a las formas y usos para lograr un código fluido y situarlo dentro de la convención.

• Clase: Propiedad y comportamiento de un tipo de objeto concreto.

• Objeto: Entidad provista de un conjunto de atributos (datos) y de comportamiento o funcionalidad (métodos). Es una instancia a una clase.

• Instancia: Lectura de los datos y funciones de una clase y la creación de un objeto a partir de éstos.

• Atributo: Datos y propiedades del objeto.

• Método: Algoritmo asociado a un objeto. Define aquello que el objeto puede hacer.

• Evento: Acción que provoca una interacción del usuario con la máquina.

• Mensaje: La comunicación dirigida a un objeto ordenándole que ejecute uno de sus métodos.

• Abstracción: Razonamiento para crear las clases capaces de dar la solución al planteamiento.

• Herencia: Una clase puede heredar los campos y métodos de otra clase.

• Polimorfismo: Varios objetos de la misma clase pueden actuar de diferente manera.

DICCIONARIO de TÉRMINOS

}CaracterísticasDestacadas de

POO

Objective-C• Lenguaje de programación basado en C

• Trabaja orientado a objetos.

• Estructurado en clases, objetos, variables de

instancias, métodos, etc.

• 3º en el ranking TIOBE

• Controlado por Apple y NextStep

• Antiguo: +30 años

Objetos:

Comportamiento:MÉTODO

yEstado:

ATRIBUTOS

El Programador

• Cómo es ATRIBUTOS

• Que hará MÉTODOS

Tiene que dar vida a los objetos:

Diferencia P.E. vs P.O.O.

• Se escriben funciones que procesan datos

Programación Estructurada

Diferencia P.E. vs P.O.O.

• Se crean objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

Programación Orientada a Objetos

OBJETOInstancia de una clase

CLASEPropiedad y comportamiento

de un objeto concretoATRIBUTO

Propiedad del objeto

MÉTODOLo que un objeto

puede hacer (algoritmo)

MENSAJEComunicación dirigida a un

objeto ordenándole que ejecute uno de sus métodos

EJEMPLO¿Que necesito para madrugar?Compro lo que voy a necesitar: un despertador.

En la tienda: - Quiero una CLASE de despertador ¿que INSTANCIAS de OBJETO de la CLASE despertador tiene?

- Tiene esta INSTANCIA de la CLASE despertador con estos ATRIBUTOS: eléctrico, 2 tipos de sonido, hora … esta otra INSTANCIA con los ATRIBUTOS: pilas, 5 tipos de alarma, hora … o esta otra INSTANCIA con los ATRIBUTOS: solar, radio y da la hora.

- Me quedo con esta INSTANCIA de OBJETO de la CLASE despertador

EJEMPLOSi quiero madrugar, lo que debo de hacer es preparar el despertador para levantarme a una hora en concreto (FUNCIÓN o MÉTODO) programar el despertador:

CLASE INSTANCIADEOBJETO (ATRIBUTOS) {! FUNCIÓN o MÉTODO}

Despertador modeloElegido (solar, radio, hora) {! ! SONAR A LAS 7 A.M.}

EJEMPLOInstanciación en Objective-C : (ejemplo orientativo)

Despertador * modeloElegido = [ [ Despertador alloc ] init ] ; [ modeloElegido sonar ] ; if ( [ modeloElegido.hora = 7.00 a.m. ] ) { sonar = YES; } else { sonar = NO; } }