Introduccin a la Programacin Orientada a Objetos Herencia
Introducción a la Programación Orientada a Objetos Herencia y Polimorfismo Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 2019 IPOO 2 cuatrimestre 2019 Sonia Rueda
El desarrollo de un sistema de software es un proceso de abstracción a partir del cual se construye un modelo de un problema y de su solución. En los problemas de mediana y gran escala la construcción del modelo requiere creatividad, capacidad de abstracción y también de un paradigma. IPOO 2 cuatrimestre 2019 El proceso de desarrollo de software
Un paradigma de programación es una guía que orienta el proceso de desarrollo de software y brinda: • Un principio que describe propiedades generales que se aplican a todo el proceso de desarrollo • Una metodología que consta de un conjunto integrado de métodos, estrategias y técnicas • Un conjunto de herramientas en particular el lenguaje de modelado y el lenguaje de programación IPOO 2 cuatrimestre 2019 Paradigmas de programación
En el paradigma procedural un sistema de software está conformado por una colección de subprogramas. Cada subprograma resuelve un subproblema de un problema global. Así, la resolución de un problema es atacada aplicando la estrategia dividir para conquistar, durante la etapa de diseño. La división se basa en las acciones, que se agrupan en subprogramas que se comunican a través de parámetros. IPOO 2 cuatrimestre 2019 Paradigma procedural
El paradigma procedural es adecuado para resolver problemas de pequeña o mediana escala, con requerimientos más o menos estables. Para los problemas que demandan soluciones flexibles, con capacidad para adaptarse rápidamente a los cambios que ocurren en entornos dinámicos, el paradigma procedural y los lenguaje imperativos, no son una buena elección. IPOO 2 cuatrimestre 2019 Paradigmas procedural
Programación Orientada a Objetos La programación orientada a objetos propone identificar durante el desarrollo de requerimientos los objetos del problema, caracterizarlos a través de sus principales atributos y agruparlos en clases. En la etapa de diseño del sistema se completa la especificación de las clases modelando el comportamiento de los objetos. El resultado de un diseño orientado a objetos incluye un diagrama de clases escrito en un lenguaje de modelado. El diagrama especifica la colección de clases y sus relaciones.
Programación Orientada a Objetos Durante la implementación del sistema se escribe el código de cada clase en un lenguaje de programación, manteniendo las relaciones especificadas en el diagrama de clases. En ejecución cada uno de los objetos del problema quedará asociado a un objeto de software. Cada objeto de software tiene un estado interno y cuando recibe un mensaje actúa de acuerdo al comportamiento definido por su clase. Una clase puede pensarse como un tipo de dato a partir del cual se declaran variables y se crean objetos.
Problemas y Soluciones PROBLEMA SOLUCIÓN Proceso de abstracción Principio POO: desarrollar software a partir de las entidades de un modelo de la realidad Sigue siendo válida la estrategia de Dividir y Conquistar
Diseño de un Sistema Dividir y Conquistar Problema DISEÑO IMPLEMENTACIÓN Subproblema 1 Módulo 1 Subproblema 2 Subproblema 3 Módulo 2 Módulo 3 Sistema
Diseño de un Sistema Dividir y Conquistar en base a las ACCIONES HOSPITAL DISEÑO IMPLEMENTACIÓN Internar Controlar SV Operar SISTEMA HOSPITAL
Diseño de un Sistema Dividir y Conquistar en base a los OBJETOS DISEÑO Paciente Médico IMPLEMENTACIÓN Paciente Médico SISTEMA HOSPITAL Internacion Signos Vitales Internacion Signos. Vitales
El proceso de clasificación realizado en un diseño orientado a objetos se organiza en niveles. En el primer nivel los objetos se agrupan en clases de acuerdo a sus atributos y comportamientos. En el segundo nivel del proceso de clasificación las clases se estructuran a través de un mecanismo de especialización-generalización llamado herencia. La herencia favorece la reusabilidad y la extensibilidad del software. Introducción a la Programación Orientada a Objetos Herencia
Caso de Estudio: Signos Vitales Diabetes Signos. Vitales <<Atributos de clase>> umbral. Temp: real <<Atributos de instancia>> temperatura: real presion : Presion. Arterial <<Constructor>> Signos. Vitales(t: real, p: Presion. Arterial) <<Consultas>> obtener. Temperatura(): real obtener. Presion(): Presion. Arterial alarma (): boolean Requiere temperatura > 0, expresada en grados. Signos. Vitales. Diabetes <<Atributos de clase>> umbral. Min, umbral. Max: real <<Atributos de instancia>> glucosa: real <<Constructor>> Signos. Vitales. Diabetes(t: real, p: Presion. Arterial, g: real) <<Consultas>> obtenerglucosa(): real alarma. Hipo(): boolean alarma. Hiper(): boolean alarma (): boolean
Caso de Estudio: Signos Vitales Diabetes Presion. Arterial Signos. Vitales. Diabetes
Caso de Estudio: Signos Vitales Diabetes La clase Signos. Vitales. Diabetes se vincula con la clase Signos. Vitales a través de un relación de herencia. La clase Signos. Vitales. Diabetes especializa a la clase Signos. Vitales. La clase Signos. Vitales. Diabetes es una subclase o clase derivada de la clase base Signos. Vitales. En Java la clase más general es Object. Todas las clases que implementamos heredan implícitamente de Object.
Caso de Estudio: Signos Vitales Diabetes class Signos. Vitales{ //Atributos de clase protected static final int umbral. Temp=38; //Atributos de instancia protected float temperatura; protected Presion. Arterial presion ; El acceso a los atributos y servicios de una clase desde sus clases derivadas depende del nivel de encapsulamiento.
Caso de Estudio: Signos Vitales Diabetes class Signos. Vitales. Diabetes extend Signos. Vitales { //Atributos de clase protected static final umbral. Min=80; protected static final umbral. Max=120; //Atributos de instancia protected real glucosa; … } La palabra reservada extend indica que la clase Signos. Vitales. Diabetes hereda de la clase Signos. Vitales.
Caso de Estudio: Signos Vitales Diabetes public Signos. Vitales. Diabetes (float t, Presion. Arterial p, float g ){ //Requiere g > 0 t > 0 super(t, p); glucosa = g; } y p ligada La clase Signos. Vitales. Diabetes puede acceder al constructor de la clase Signos. Vitales usando el comando super(). Si un constructor usa el constructor de la clase base, la instrucción super() debe ser la primera del bloque.
Caso de Estudio: Signos Vitales Diabetes //Comandos public void establecer. Glucosa(float g) { glucosa = g; } //Consultas public float obtener. Glucosa (){ return glucosa; } La clase Signos. Vitales. Diabetes agrega comandos y consultas.
Caso de Estudio: Signos Vitales Diabetes class historia. Clinica{ Signos. Vitales. Diabetes s; s = new Signos. Vitales. Diabetes (38. 5, new Presion. Arterial(70, 130), 110); Presion. Arterial p = s. obtener. Presion(); float g = s. obtener. Glucosa(); } Un objeto de clase Signos. Vitales. Diabetes puede recibir mensajes considerando los métodos que brindan la clase Signos. Vitales. Diabetes y Signos. Vitales.
Caso de Estudio: Signos Vitales Diabetes class historia. Clinica{ Signos. Vitales. Diabetes s; Presion. Arterial p 1, p 2; p 1 = new Presion. Arterial(70, 130), s = new Signos. Vitales. Diabetes (38. 5, p 1, 110); p 2 = s. obtener. Presion(); float g = s. obtener. Glucosa(); }Un objeto de clase Signos. Vitales. Diabetes puede recibir mensajes considerando los métodos que brindan la clase Signos. Vitales. Diabetes y Signos. Vitales.
Caso de Estudio: Signos Vitales Diabetes La clase derivada hereda de la clase base todos los atributos y métodos. s : Signos. Vitales. Diabetes temperatura presion glucosa El estado interno de un objeto de clase Signos. Vitales. Diabetes tiene todos los atributos de Signos. Vitales más los específicos de su clase.
- Slides: 22