Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Resumen Parcial N°2 de Programación II Unidad N°4 Contenidos: ● Métodos externos. ● Propiedades: Concepto, definición, acceso, implementación. ● Enumeraciones: Concepto, definición, concepto de herencia. ● Clase base, clase hija, sintaxis de clases derivadas. ● Constructores de clases hijas. Métodos Externos Cuando una clase usa objetos de otra clase y se hacen llamadas a métodos de ese objeto (métodos definidos en otra clase) decimos que se llama a un método externo. Sintaxis: Clase nombreDeObjeto = new Clase(); nombreDeObjeto.nombreDelMetodo(parametros); La llamada a métodos internos (en la misma clase) no necesitan el nombre del objeto, se llaman directamente. Propiedades Representan características de los objetos que son accedidas como si fueran atributos. Una propiedad es un miembro que proporciona un mecanismo flexible para leer, escribir o calcular el valor de un campo privado. Las propiedades se pueden usar como si fueran miembros de datos públicos, pero en realidad son métodos especiales denominados descriptores de acceso. Esto permite acceder fácilmente a los datos a la vez que proporciona la seguridad y la flexibilidad de los métodos. Una propiedad puede proporcionar protección a un campo de clase con el fin de evitar que se cambie sin el conocimiento del objeto. ¿Cómo implementarlas? Utilizando get{ } y set { } para las propiedades. 1 Descriptores de acceso: SET => permite que los miembros de datos se asignen. GET => recupera los valores de los miembros de datos. Estos descriptores de acceso pueden tener diferentes niveles de acceso. La palabra clave VALUE se usa para definir el valor que va a asignar el descriptor de acceso SET. Sólo lectura Tienen sólo el descriptor de acceso GET. Sólo escritura Tienen solo el descriptor de acceso SET. Lectura Escritura Tienen ambos descriptores de acceso. Ejemplo: private string nombre; private int edad; public string Nombre { set { nombre = value; } get { return nombre; } } public int Edad { set { edad = value; } get { return edad; } } Enumeraciones Una de las características importantes de la mayoría de los lenguajes de programación modernos es la posibilidad de definir nuevos tipos de datos. Entre estos tipos definidos por el usuario se encuentran los tipos enumerados o enumeraciones. Un tipo enumerado o de enumeración es un tipo cuyos valores están definidos por una lista de constantes de tipo entero. 2 Una enumeración, o elemento enum, es un nombre simbólico para un conjunto de valores. Las enumeraciones se tratan como tipos de datos y se pueden usar a fin de crear conjuntos de constantes para su uso con variables y propiedades enum (palabra reservada). En un tipo de enumeración las constantes se representan por identificadores separados por comas y encerrados entre llaves. Los valores de un tipo enumerado comienzan con 0, a menos que se especifique lo contrario y se incremente en 1. Sintaxis: enum nombre_tipo {identificador1, identificador2, ...] Ejemplo: 3 Herencia Es un mecanismo que permite definir nuevas clases a partir de otras ya definidas de modo que si en la definición de una clase indicamos que ésta deriva de otra, entonces la primera (a la que se le suele llamar clase hija) será tratada por el compilador automáticamente como si su definición incluyese la definición de la segunda (a la que se le suele llamar clase padre o clase base). Ejemplo sintaxis en C#: class <nombreHija> : <nombrePadre> { <miembrosHija> } Herencia: Clase Base La clase principal de la que derivan las restantes se denomina clase base (en C++), clase padre o superclase y las subclases, se denominan clases derivadas, hija o subclase (en C++). La clase base no tiene padre. Herencia: Clases Derivadas La herencia o relación es-un es la relación que existe entre dos clases, en la que una clase denominada derivada se crea a partir de otra ya existente, denominada clase base. 4 Este concepto nace de la necesidad de construir una nueva clase y existe una clase que representa un concepto más general; en este caso la nueva clase puede heredar de la clase ya existente. Jerarquía de Herencia La jerarquía de herencia puede tener más de dos niveles. Una clase hija puede ser una clase padre, a su vez, de otra clase hija. Las clases hija o subclases añaden sus propios atributos y operaciones a los de sus clases base. Una clase puede no tener clase hija, en cuyo caso es una clase hija. Si una clase tiene sólo un padre, se tiene herencia simple y si tiene más de un padre, entonces, se tiene herencia múltiple. HERENCIA SIMPLE => 1 PADRE HERENCIA MÚLTIPLE =>MÁS DE 1 PADRE Herencia Simple Una clase hija o subclase puede heredar atributos y operaciones de otra clase padre o superclase. La clase padre es más general que la clase hija. Una clase hija puede ser, a su vez, una clase padre de otra clase hija. Herencia Múltiple Herencia múltiple o generalización múltiple se produce cuando una clase hereda de dos o más clases padres. Aunque la herencia múltiple está soportada en UML y en C++ (no en Java), en general, su uso no se considera una buena práctica en la mayoría de los casos. Esta característica se debe al hecho de que la herencia múltiple presenta un problema complicado cuando las dos clases padre tienen solapamiento de atributos y comportamientos. ¿A qué se debe la complicación? Normalmente a conflictos de atributos o propiedades derivadas (Ambigüedad). 5 Estos problemas conducen a malas prácticas de diseño y ha hecho que lenguajes de programación como Java y C# no soportan herencia múltiple. Sin embargo como C++ soporta esta característica, UML incluye en sus representaciones este tipo de herencia. Declaración de una Clase Derivada Constructor de una Clase Derivada Cuando se crea un objeto de una clase derivada, primero se invoca al constructor de la clase o clases base y a continuación al constructor de la clase derivada. Lógicamente, si no hemos definido los constructores de las clases, se usan los constructores por defecto que crea el compilador. 6 ACCESO A MIEMBROS INTERNOS ( THIS/SELF) Palabra reservada que se utiliza para hacer referencia a un objeto o miembro que pertenezca a la clase. this.<nombre_objeto>; Es decir, dentro de un método con parámetros cuyos nombres coincidan con campos, se da preferencia a los parámetros y para hacer referencia a los campos hay que pre fijarlos con el this. Algunos programadores prefieren utilizar this para dejar claro que se está haciendo referencia a un miembro de la clase. Ejemplo: Persona (string Nombre, int Edad) { this.Nombre = Nombre; this.Edad = Edad; } UML ¿Qué es? Es un lenguaje de modelado visual de propósito general orientado a objetos, para escribir “planos” de software. Impulsado por el “Object Management Group”. Estándar: UML es un lenguaje independiente del proceso de desarrollo, aunque para que sea utilizado óptimamente se debe utilizar un proceso que sea dirigido por casos de uso, centrado en la arquitectura, iterativo e incremental. UML = Unified Modeling Language Se utiliza para: ● Visualizar: UML es un lenguaje gráfico y es algo más que un conjunto de símbolos gráficos. Detrás de cada símbolo en la notación UML hay una semántica bien definida. ● Especificar: tiene que ver con la construcción de modelos precisos, no ambiguos y completos. UML cubre la especificación de todas las decisiones de análisis. diseño e implementación que deben realizarse al desarrollar y desplegar un sistema con gran cantidad de software. 7 ● Construir: UML no es un lenguaje de programación visual, pero sus modelos pueden conectarse de forma directa a una gran variedad de lenguajes de programación, esto permite realizar ingeniería directa, es decir, la generación de código a partir de los modelos. ● Documentar: UML permite generar una serie de artefactos además del código fuente. Representar clase “empleado” (se recomienda visibilidad privada o protegida para los atributos): 8 Clase Abstracta: En la poo así como en la vida real, los objetos se relacionan.También se componen unos de otros por ejemplo un automóvil podría estar compuesto de otros objetos: un conductor un dueño un motor (se puede usar para diagramar clases herramientas como : umbrello, staruml, argouml). Relaciones Entre Clases Las relaciones entre clases son comunes dentro de cualquier sistema, existen para saber el “cómo” y el “por qué” se relacionan y, hacer uso de los diagramas de clases, nos facilita definir o saber que tipo de relación existe entre dos clases. Asociación Existen diferentes formas en que las clases se relacionan, sin embargo el tipo de relación más común es la de asociación. En el diagrama UML, podemos ver como la clase persona se relaciona con la clase perro. Ejemplo: 9 Agregación Otro tipo de relación semántica común entre clases, es la de agregación. Significa que una clase agrega a otra como parte de se estructura, la relación implica una dependencia que se puede interpretar como “tiene un”. Ejemplo: 10 Composición El siguiente tipo de relación entre clases, es la de composición. Este tipo de relación es más restrictiva, ya que se puede interpretar como “debe tener”, lo que implica una relación semánticamente más fuerte que sus antecesoras. Ejemplo: 11 Extensión El último tipo de relación existente es el de extensión. Ejemplo: 12 Comandos GIT 13 Programación orientada por capas Unidad N°5 Cuando se construye software, se llevan a cabo varias técnicas de manera que el desarrollo se haga en forma ordenada y así poder asegurar un avance continuo del proyecto, un producto final de calidad, y además que la tarea de realizar posteriores mejoras sea de una forma más fácil. Existen muchas prácticas de programación, dependiendo del tipo de software que se va a desarrollar y de la disciplina o disciplinas de programación que se utilicen en el desarrollo del producto. Una de las más utilizadas se llama la programación por capas, que consiste en dividir el código fuente según su funcionalidad principal. Programación orientada por capas La programación por capas es una técnica de ingeniería de software propia de la programación por objetos, éstos se organizan principalmente en 3 capas: ● Capa de presentación o frontera. ● Capa de lógica de negocio o control. ● Capa de datos. La programación por capas es una metodología para desarrollar software. ¿Cuál es el objetivo? Que cada una de las partes que compone aplicación informática se encuentre separada y no interfiera con las más partes. A cada una de esas partes se le llama «capa». CAPA DE PRESENTACIÓN Es todo lo que el usuario puede ver. La presentación del programa ante el usuario, debe manejar interfaces que cumplan con objetivo principal de este componente, el cual es facilitar al usuario interacción con la aplicación. La interfaz debe ser amigable y fácil de utilizar para el usuario final. Esta capa se comunica únicamente con la capa de Reglas de Negocio o Control. 14 CAPA DE LÓGICA DE NEGOCIO Es llamada capa de reglas de negocio porque en esta se definen todas las reglas que se deben cumplir para una correcta ejecución del programa. Es aquí donde se encuentra toda la lógica del programa, así como las estructuras de datos y objetos encargados para la manipulación de los datos existentes, así como el procesamiento de la información ingresada o solicitada por el usuario en la capa de presentación. Representa el corazón de la aplicación ya que se comunica con todas las demás capas para poder llevar a cabo las tareas. Recibe los datos que ingresó el usuario del sistema mediante la capa de presentación, luego los procesa y crea objetos según lo que se necesite hacer con estos datos; esta acción se denomina encapsulamiento. Al encapsular los datos, el programa asegura mantener la consistencia de los mismos, así como obtener información precisa de las bases de datos e ingresar en las mismas, solamente la información necesaria, asegurando así no tener datos duplicados ni en las bases de datos, ni en los reportes solicitados por el usuario. CAPA DE DATOS Es la encargada de realizar transacciones con bases datos con otros sistemas para obtener información del sistema. El manejo de los datos debe realizarse de forma tal que haya consistencia en los mismos, de tal forma los datos que ingresan a como los que extraen de las bases de datos, deben ser consistentes y precisos. Esta capa envía la información directamente a la capa de reglas de negocio para que sea procesada e ingresada en objetos según se necesite, esta acción se denomina encapsulamiento. NO EXISTE DEPENDENCIA DEL ORIGEN DE DATOS. La programación en capas no es una técnica rígida que debe implementarse solamente de una forma, sino que los desarrolladores de proyectos tienen múltiples maneras de implementarla según las tecnologías y tendencias que se utilicen. La satisfacción de los requerimientos del usuario es la base para escoger el modelo de implementación a seguir. Dentro del concepto de programación en capas, existen dos términos esenciales para el mejor entendimiento de los conceptos relativos a esta metodología, es aquí donde radica la importancia de la cohesión y el acoplamiento dentro de una aplicación generada mediante este método. 15 Cohesión Describe el comportamiento que deben tener los módulos y objetos de un sistema o subsistema, comportamiento que describe la forma en que deben trabajar los objetos y módulos entre sí, con alta cohesión para que trabajando en conjunto los módulos y objetos puedan alcanzar un solo propósito manera más eficaz y rápida. Determina que las operaciones de un Objeto deben trabajar en conjunto para alcanzar un propósito común. Es deseable que haya alta cohesión. Acoplamiento Grado de dependencia que existe entre los módulos. Este grado de dependencia es considerablemente bajo ya que el trabajo se divide en módulos para que cada uno tenga un funcionamiento específico y pueda ser más factible la implementación por separado. En caso de haber alto acoplamiento entre módulos no se estaría alcanzando el principal objetivo de este modelo, el cual es dividir una tarea grande en varias pequeñas, ya que los módulos actuarían como uno solo al estar altamente acoplados entre sí y se perdería el objetivo primordial dividir el proyecto. Ventajas ● Trabajo ordenado. ● Modularidad. ● Se reduce la complejidad. ● Facilidad para distribuir el desarrollo del software. ● Mayor encapsulamiento. ● Alta Escalabilidad. ● Facilidad para desarrollar en múltiples plataformas (web, escritorio, móvil). ● Facilidad para encontrar errores. ● Facilita el trabajo en equipo. ● Reutilización de código. 16 Desventajas ● Cuando se implementa un modelo de programación en capas, se debe llegar a un balance entre el número de capas y subcapas que componen el programa. Este debe ser necesario para realizar un trabajo específico con eficiencia y ser lo más modular posible. ● De lo contrario se tiene una serie de desventajas como: pérdida de eficiencia, realización de trabajo innecesario o redundante entre capas, gasto de espacio de la aplicación debido a la expansión de las capas, o bien una alta dependencia entre los objetos y capas que contradice el objetivo principal del modelo. ¿Qué es MVC? MVC significa modelo (model), vista (view), controlador (controller). Esto es lo que significan cada uno de esos componentes: ● Modelo: El backend que contiene toda la lógica de datos ● Vista: El frontend o interfaz gráfica de usuario (GUI) ● Controlador: El cerebro de la aplicación que controla como se muestran los datos. MVC El concepto de MVC fue propuesto como una forma de desarrollar el GUI de aplicaciones de escritorio. Hoy en día, el patrón MVC se utiliza para aplicaciones web modernas porque permite que la aplicación sea escalable, mantenible y fácil de expandir. El patrón MVC te ayuda a dividir el código frontend y backend en componentes separados. De esta manera, es mucho más fácil administrar y hacer cambios a cualquier lado sin que interfieran entre sí. 17
Compartir