Programación Orientada a Objetos

Embed Size (px)

DESCRIPTION

Paradigmas y programación orientada a objetos

Citation preview

  • 1

  • Homologar conceptos del Paradigma Orientada a Objetos.

    Poder realizar anlisis y diseo OO.

    Aplicar los conceptos aprendidos en el curso.

    Aumentar la calidad en los desarrollos en menos tiempo. 2

  • Es parte de la evolucin del pensamiento humano, los paradigmas han estado presentes en diferentes aristas de la concepcin del mundo.

    3

    Es un conjunto completo de valores, creencias y tcnicas que son compartidas por todos los miembros de una comunidad especfica.

    Los paradigmas de programacin son una manera determinada de resolver un problema, surgen con los cambios que va teniendo la humanidad tratando de cubrir nuevas necesidades.

  • 4

    Estructuras en C

  • 5

  • 6

  • 7

    Lenguaje de Modelado.

    Proporciona una notacin grfica aceptada mundialmente

    No es slo para modelar programas orientados a objetos

    Tiene varias versiones siendo la ms reciente (estable) la 2.4.1 lanzada en agosto del 2011

  • 8

  • 9

  • 10

  • 11

    El mundo est formado por objetos, desde una etapa muy temprana categorizamos los objetos y descubrimos su comportamiento.

  • 12

    Plantilla que permite crear objetos Describe un grupo de objetos con atributos (propiedades), operaciones (comportamiento) y relaciones en comn.

    Clase

    Objeto

    Abstraccin con un significado y lmites claros del problema en cuestin. Tiene un estado (lo que sabe, atributos) y comportamiento (lo que puede hacer, mtodos).

  • 13

    Objeto

    Todos los objetos presentan una identidad, que los hace

    distinguibles, un estado y un comportamiento.

    El trmino identidad significa que los objetos se distinguen por su existencia inherente y no por propiedades descriptivas que puedan tener.

    Son instancias de una clase, cada objeto conoce su clase.

    La agrupacin en clases de los problemas permite la abstraccin de un problema.

  • 14

    Relacin entre clases en la cual una clase comparte la estructura y comportamiento definidos en otra clase.

    Herencia

    Polimorfismo

    Se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo mtodo de forma diferente, cada clase sabe cmo realizar tal operacin.

  • 15

    El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen, con funcionalidad similar, en clases que son completamente independientes una de otra (stas no tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la clase image y la clase link pueden todas tener la funcin "display".

    Tipos de Polimorfismo

    El polimorfismo paramtrico es la capacidad para definir varias funciones utilizando el mismo nombre, pero usando parmetros diferentes (nombre y/o tipo). El polimorfismo paramtrico selecciona automticamente el mtodo correcto a aplicar en funcin del tipo de datos pasados en el parmetro.

  • 16

    int addition(int,int)

    float addition(float, float)

    char addition(char, char)

    El Polimorfimo subtipado permite redefinir un mtodo en clases que se hereda de una clase base.

    Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y pen, cada uno heredando el objeto pieza.

    El mtodo movimiento podra, usando polimorfismo de subtipado, hacer el movimiento correspondiente de acuerdo a la clase objeto que se llama. Esto permite al programa realizar el movimiento de pieza sin tener que verse conectado con cada tipo de pieza en particular.

  • 17

    public class Persona { }

    Persona objPersona = new Persona();

    Clase Persona Objeto objPersona de la clase Persona

  • 18

    public class Persona { private string nombre; public string Nombre { get { return nombre; } set { nombre = value; } } private int edad; public int Edad { get { return edad; } set { edad = value; } } public void Caminar() { } }

    public class Empleado:Persona { }

    Clase Persona

    Clase Empleado que hereda de la clase Persona

    Enca

    psu

    lam

    ien

    to

  • 19

    La posibilidad de tener dos o ms mtodos con el mismo nombre pero funcionalidad diferente. Es necesario que dichos mtodos tengan diferentes argumentos, tambin pueden variar el tipo de retorno.

    Sobrecarga

    Abstraccin

    Son las caractersticas y comportamientos de un objeto, sin revelar cmo se implementan. Significa quitar las propiedades y acciones de un objeto para dejar slo aquellas que sean necesarias.

  • 20

    Agrupa cierta funcionalidad de un mtodo (un mtodo slo debe tener una funcin). Permite reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin.

    La funcionalidad del objeto se oculta.

    Encapsulamiento

  • 21

    public class Persona {// inicio de la clase private string nombre; public string Nombre { get { return nombre; } set { nombre = value; } } private int edad; public int Edad { get { return edad; } set { edad = value; } } public void Caminar() { }

    public Persona() { nombre = null; edad = 0; } public Persona(string nombrePersona, int edadPersona) { nombre = nombrePersona; edad = edadPersona; } }// fin de la clase

    Sobrecarga

  • 22

    Pblico: se puede acceder al miembro de la clase desde cualquier lugar.

    Protegido: slo se puede acceder al miembro de la clase desde la propia clase o desde una clase que herede de ella.

    Privada: slo se puede acceder al miembro de la clase desde la propia clase.

    Los modificadores de acceso permiten aumentar la cohesin de los componentes del sistema.

    Modificadores de acceso

  • 23

    Nos dice que la informacin que almacena una clase debe de ser coherente y debe estar (en la medida de lo posible) relacionada con la clase.

    Cuando las clases ejecuta una y slo una tarea, teniendo un nico objetivo a cumplir, se dice que tiene Cohesividad Funcional.

    Alta Cohesin

  • 24

    Se refiere a tener las clases lo menos ligadas entre s. De tal forma que en caso de producirse una modificacin en alguna de ellas, se tenga la mnima repercusin posible en el resto de clases, potenciando la reutilizacin, y disminuyendo la dependencia entre las clases.

    Bajo acoplamiento

    Acoplamiento de Contenido: Cuando un mdulo referencia directamente el contenido de otro mdulo. (En lenguajes de alto nivel es muy raro).

    Acoplamiento Comn: Cuando dos mdulos acceden (y afectan) a un mismo valor global.

    Acoplamiento de Control: Cuando un mdulo le enva a otro un elemento de

    control que determina la lgica de ejecucin del mismo.

  • 25

    Nos permiten crear mtodo generales, que recrean un comportamiento comn, pero sin especificar cmo lo hacen. Una clase abstracta puede incluir mtodos implementados y no implementados o abstractos, miembros dato constantes y otros no constantes. Puede heredarse.

    Clase Abstracta

  • 26 26

    Clase Abstracta

    public abstract class ClaseAbstracta { abstract public int metodoAbstracto(); }

    public class Miclase:ClaseAbstracta { public override int metodoAbstracto() { return 0; } }

    Clase Abstracta heredada en la clase Miclase

  • 27

    Las interfaces, tal como las clases abstractas. No se pueden instanciar. Sus mtodos deben ser re-escritos por la clase que implemente, es como un contrato es decir es una lista de mtodos no implementados, adems puede incluir la declaracin de constantes. Debe implementarse.

    Interfaz

  • 28

    public interface IMiInterfaz { int ExisteUsuario(string usuario, string clave); bool RegistraEntradaUsuario(int usuarioID); }

    public class Empleado:IMiInterfaz { public int ExisteUsuario(string usuario, string clave) { int idUsuario = 1; return idUsuario; } public bool RegistraEntradaUsuario(int usuarioID) { return true; } }

    Interfaz

    Implementacin de la Interfaz

  • 29

    El PRU tiene que ver con el nivel de acoplamiento entre mdulos dentro de la ingeniera del software. En trminos prcticos, este principio establece que: Una clase debe tener una y slo una nica causa por la cual puede ser modificada.

    Principio de Responsabilidad nica

    La correcta aplicacin del PRU simplifica el cdigo y se traduce en facilidad de mantenimiento, mayores posibilidades de reutilizacin de cdigo y de crear unidades de testeo especficas para cada responsabilidad.

  • 30

    Las dos caractersticas del principio: abierto en extensin y cerrado en modificacin. Las claves para la correcta aplicacin de este principio son la abstraccin y el polimorfismo.

    PRINCIPIO DE OPEN / CLOSED

  • 31

    La divisin entre el anlisis y diseo es poco clara, el trabajo de los dos se mezcla continuamente "Debatir sobre la definicin no resulta constructivo en absoluto y no se emplean con el mismo sentido en los mtodos: lo importante es saber resolver el problema de crear software y darle mantenimiento con mayor eficiencia, con mayor rapidez y anlisis a un menor precio.

  • 32

  • 33

  • 34

  • 35

  • 36

    Es frecuente omitir conceptos durante la fase inicial de identificacin y descubrirlos ms tarde cuando se examinen los atributos o asociaciones o durante la fase de diseo. Un modelo conceptual muestra conceptos del mundo real

  • 37

  • 38

  • 39

    Notacin de UML para clases, instancias y conjunto de instancias

  • 40

    Niveles de visibilidad

    (-) Privado : es el ms fuerte. Esta parte es totalmente invisible. (#) Protegido: Los atributos y operaciones protegidos estn visibles para las clases derivadas de la original. (+) Pblico: Los atributos/operaciones pblicos son visibles a otras clases.

  • 41

    Niveles de visibilidad

    (-) Privado : es el ms fuerte. Esta parte es totalmente invisible. (#) Protegido: Los atributos y operaciones protegidos estn visibles para las clases derivadas de la original. (+) Pblico: Los atributos/operaciones pblicos son visibles a otras clases.

  • 42

  • 43

  • 44

  • 45

  • 46

    retorno : mensaje(parametro:tipoParametro) : tipoRetorno

    En esta sintaxis puede incluirse un valor de retorno anteponindole al mensaje un nombre de variable y un operador de asignacin (":="), es opcional mostrar el tipo de valor de retorno. Si se desea modelar una iteracin en el mensaje, se agrega un asterisco (*) al nmero de secuencia.

    2: mostrar(x,y) mensaje simple 1.3.1: p: = encontrar(espec) llamada anidada con valor de retorno [x

  • 47

  • 48

    Requerimientos

    Permitir crear y editar diagramas de clase y colaboracin.

    Las descripcin de las clases debe poder llegar a un nivel en el cual puedan ser implementadas fcilmente en un lenguaje de programacin OO.

    Presentar una interfaz amigable al usuario personalizando el Look And Feel

    Proporcionar al usuario un rbol grfico que permita tener un orden en los diagramas creados (rbol de proyecto).

  • 49

    Requerimientos

  • 50

    Requerimientos

    El sistema debe presentar un buen diseo para que futuros desarrolladores puedan incrementar nuevas funcionalidades fcilmente.

    Se deben poder imprimir los diagramas generados.

  • 51