Clase 2 Poo

19
Programación Orientada a Programación Orientada a Objetos Objetos Clase 2 Clase 2 Ing. Andrés M García O

Transcript of Clase 2 Poo

Page 1: Clase 2 Poo

Programación Orientada Programación Orientada a Objetosa Objetos

Clase 2Clase 2

Ing. Andrés M García O

Page 2: Clase 2 Poo

Definición de ClasesDefinición de ClasesPara definir una Clase es necesario diseñarlaidentificando cuales son sus propiedades, métodosy eventos. Para esto se requiere tener en cuentalos siguientes aspectos:

Sirve para contener datos?Aparece en la pantalla?Tiene diversas funciones lógicas o de procesamiento de datos?

Ing. Andrés M García O

Page 3: Clase 2 Poo

Definición de ClasesDefinición de Clases¿Qué elementos de información almacenará,

rastreará y manipulará la aplicación?.¿Qué conjuntos de acciones deberán realizarse?.¿qué información necesitará saber la clase pararealizar dicha acción?. ¿qué cambiará en la clase deben ser conocidos

por las demás partes de la aplicación?.Existen funciones y/o propiedades o internos que

no le interesan a ninguna otra clase?¿Es una clase que puede ser una subclase?

Ing. Andrés M García O

Page 4: Clase 2 Poo

Definición de ClasesDefinición de Clasespackage code // Definición del paquete en el que esta la

clase{

import flash.display.MovieClip; //Importa los paquetes y las clases necesarias.

public class Mi_clase extends MovieClip //Define la Clase{ //debe tener el mismo nombre del archivo

public function Mi_clase(){ //Define el método constructor // debe tener el mismo nombre de la clase

trace("Hola mundo!!");// Función básica }

}}

Ing. Andrés M García O

Page 5: Clase 2 Poo

Definición de atributos de una Definición de atributos de una ClaseClaseAtributo Clase Definición

dynamic Permite añadir propiedades a instancias en tiempo de ejecución.

final No debe ser heredada por otra clase.

internal (valorpredeterminado)

Visible para referencias dentro del paquete actual.

public Visible para referencias en todas partes.

Ing. Andrés M García O

Page 6: Clase 2 Poo

Ejemplo Definición de atributos de Ejemplo Definición de atributos de una Clase Internaluna Clase Internal

Ing. Andrés M García O

PublicClase

B

InternalClase A

Directorio de Clases 1

PublicClase

C

Directorio de Clases 2

Public Clase B

Var A:Clase AMetodo Cambiar _A()

Public Clase C

Var B:Clase BVar A:Clase AMetodo Cambiar _B()

No se puedePorque esInternal

Page 7: Clase 2 Poo

Definición de atributos de una Definición de atributos de una Propiedad de la ClasePropiedad de la Clase

Atributo Propiedad Definición

internal (valorpredeterminado)

Visible para referencias dentro del mismo paquete.

private Visible para referencias dentro de la misma clase.

protected Visible para referencias en la misma clase y en clases derivadas.

public Especifica que una propiedad pertenece a la clase en lugar de alas instancias de la clase.

static Especifica que una propiedad pertenece a la clase en lugar de alas instancias de la clase.

UserDefinedNamespace Nombre de espacio de nombres personalizado definido por el usuario.

Ing. Andrés M García O

Page 8: Clase 2 Poo

Ejemplo Definición de atributos de Ejemplo Definición de atributos de una Propiedaduna Propiedad

Ing. Andrés M García O

PublicClase B

InternalClase A

Directorio de Clases 1

PublicClase C

Directorio de Clases 2

Public Clase B{Private xProtected yPublic zVar A:Clase AMetodo Cambiar _x(int)}

Public Clase C extends B{ This.x=5This.Y=3This.z=0This.cambiar_x(5)}

No se puedePorque esPrivate.“This” se refiereA una propiedadheredada

Page 9: Clase 2 Poo

Definición métodos de una ClaseDefinición métodos de una ClaseTipo de método Definición

Constructor Comparten el nombre con la clase en la que se definen. Todo el código que se incluya en un método constructor se ejecutará siempre que una instancia de la clase se cree con la palabraclave new.

Estático Estos métodos, que se asocian a una clase en lugar de a una instancia de clase, son útiles para encapsular la funcionalidad que afecta a algo más que el estado de una instancia individual.

De instancia Estos métodos, que se asocian a instancias de una clase en lugar de a la clase como un todo

Descriptores de acceso (captador y definidor)

Las funciones descriptoras de acceso get y set, también denominadas captadores y definidores, permiten implementar los principios de programación relacionados con la ocultación de información y encapsulación

Vinculado es simplemente un método que se extrae de su instancia. Los métodos que se pasan como argumentos a una función o se devuelven como valores desde una función son ejemplos de métodos vinculados.

Ing. Andrés M García O

Page 10: Clase 2 Poo

Ejemplo Definición de Método Ejemplo Definición de Método constructorconstructor

Ing. Andrés M García O

class Ejemplo{ public var status:String;

public function Ejemplo() { status = "inicializado"; }

}

// Código que invoca la clase Ejemplo

var mi_Ejemplo : Ejemplo = new Ejemplo(); trace(mi_Ejemplo.status); // output: inicializado

// El método constructor lleva el // mismo nombre de la Clase

Referencia http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/

Page 11: Clase 2 Poo

Ejemplo Definición de MétodoEjemplo Definición de Método de instancia de instancia

Ing. Andrés M García O

class ThisTest { function thisValue():ThisTest // Este es el método de instancia { return this; }

}

var myTest:ThisTest = new ThisTest(); trace(myTest.thisValue() == myTest); // output: true

Referencia http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/

Page 12: Clase 2 Poo

Ejemplo Definición de MétodoEjemplo Definición de Método de descriptores de acceso ( de descriptores de acceso (Captador o definidor)Captador o definidor)

Ing. Andrés M García O

class GetSet { private var privateProperty:String; public function get publicAccess():String // Método Captador { return privateProperty; } public function set publicAccess(setValue:String):void // Método definidor { PrivateProperty = setValue; } }

var myGetSet:GetSet = new GetSet();trace(myGetSet.publicAccess); // output: null myGetSet.publicAccess = "hello"; trace(myGetSet.publicAccess); // output: hello

Referencia http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/

Page 13: Clase 2 Poo

Ejemplo Definición de MétodoEjemplo Definición de Método Lígado o vinculado Lígado o vinculado

Ing. Andrés M García O

class ThisTest { private var num:Number = 3; function foo():void // Definicón de Método ligado { trace("foo's this: " + this); trace("num: " + num); } function bar():Function { return foo; // Retono de Método ligado}

}

var myTest:ThisTest = new ThisTest(); var myFunc:Function = myTest.bar(); trace(this); // output: [object global] myFunc(); /* output: foo's this: [object ThisTest] output: num: 3 */

Referencia http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/

Page 14: Clase 2 Poo

Definición de EventosDefinición de Eventos Un evento es toda actividad que se sabe que va a suceder pero no se

puede predecir cuando. Por lo general se refiere a la interacción del usuario, pero existen mas eventos causados por diversos factores

Para llevar a cabo la gestión de eventos, se deben identificar tres elementos importantes:◦ El origen del evento: ¿en qué objeto va a repercutir el evento? Por

ejemplo, ¿en qué botón se hará clic o qué objeto Loader está cargando la imagen?

◦ El evento: ¿qué va a suceder, a qué se va a responder? Es importante identificar esto porque muchos objetos activan varios eventos.

◦ La respuesta: ¿qué pasos hay que llevar a cabo cuando ocurra el evento?

Ing. Andrés M García O

Page 15: Clase 2 Poo

Definición de InterfasesDefinición de InterfasesUna interfaz es una colección de declaraciones de

métodos que permite la comunicación entre objetos que no están relacionados.

Por ejemplo, las APIs que contienen declaraciones de métodos que una clase puede utilizar para controlar objetos de evento.

Ing. Andrés M García O

Page 16: Clase 2 Poo

Definición HerenciaDefinición HerenciaLa herencia es una forma de reutilizar el código

que por medio de clases nuevas basadas en clases existentes.

Las clases existentes se llaman clases base o superclases, y las clases nuevas subclases.

La herencia es que permite reutilizar código de una clase base manteniendo intacto el código existente.

Ing. Andrés M García O

Page 17: Clase 2 Poo

Ejemplo Definición HerenciaEjemplo Definición Herencia

Ing. Andrés M García O

class Shape{public function area():Number{return NaN;}}class Circle extends Shape // Definición de herencia de la clase Shape{private var radius:Number = 1;override public function area():Number{return (Math.PI * (radius * radius));}}

Referencia http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/

Page 18: Clase 2 Poo

Definición PolimorfismoDefinición Polimorfismo

La herencia permite aplicar el concepto de polimorfismo en el código de una clase heredada.

El polimorfismo es la capacidad de utilizar un solo nombre de método para un método que se comporta de distinta manera cuando se aplica a distintos tipos de datos.

Ing. Andrés M García O

Page 19: Clase 2 Poo

Ejemplo Definición PolimorfismoEjemplo Definición Polimorfismo

Ing. Andrés M García O

class Shape{public function area():Number{return NaN;}}class Circle extends Shape{private var radius:Number = 1;override public function area():Number{return (Math.PI * (radius * radius));}}

Referencia http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/

class Square extends Shape{private var side:Number = 1;override public function area():Number{return (side * side);}}

Las funciones resaltadas en rojo tienen comportamiento diferente pero manejan el mismo nombre esto se conoce como sobre carga o polimorfismo