Introducción a la Programación Orientada a Objetos
Sonia Rueda
Introducción a la Programación Orientada a Objetos
Sonia Rueda
Departamento de Ciencias e Ingeniería
de la ComputaciónUNIVERSIDAD NACIONAL DEL SUR
2013
DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓNUNIVERSIDAD NACIONAL DEL SUR
Programación
Matemática
Software
Sistemas deHardware
Electrónica
Trabajo Finalde Carrera
Teoría
MateriaOptativa
Objetivos de las Materias de Programación
•Aprender Contenidos Conceptuales
Introducción a la Programación Orientada a Objetos
Resolución de Problemas y Algoritmos
Introducción a la Programación Orientada a
ObjetosAlgoritmoTipo de DatoIteraciónRecursividadDiseño Top-Down…
ObjetoClaseEncapsulamientoHerenciaPolimorfismo…
Objetivos de las Materias de Programación
Reforzar y desarrollar Competencias generales
• Comunicarse en forma oral y escrita
• Resolver problemas
• Aprender con autonomía
• Administrar el tiempo
• Trabajar en Equipo
…
Introducción a la Programación Orientada a Objetos
Objetivos de las Materias de Programación
Reforzar y desarrollar Competencias específicas
• Dividir problemas en subproblemas
• Diseñar algoritmos
• Utilizar diferentes lenguajes de diseño y de programación
…
Introducción a la Programación Orientada a Objetos
Objetivo de IPOO
Contenidos de IPOO
Aprender y aplicar los fundamentos de la programación orientada a objetos a la construcción de sistemas de software para resolver problemas de pequeña y mediana escala.
• Conceptos, principios y técnicas de programación orientada a objetos
• El lenguaje de programación Java
Introducción a la Programación Orientada a Objetos
Organización de las Clases
En las clases teóricas, en las prácticas y en el laboratorio se trabaja con un enfoque basado en la resolución de problemas.
En las clases teóricas se presentan conceptos, principios y técnicas de programación orientada a objetos y se aplican en ejemplos concretos.
En las clases prácticas se presenta el lenguaje de programación Java, se aplican los conceptos, principios y técnicas, se implementan clases a partir de diagramas y se diseñan los algoritmos que modelan los servicios.
En las clases de laboratorio se implementan y verifican las soluciones de algunos problemas seleccionados de los trabajos prácticos.
Introducción a la Programación Orientada a Objetos
Problemas y Soluciones
Introducción a la Programación Orientada a Objetos
Resolución de un Problema Programa
abstracción
DATOS
ACCIONES
Problemas y Soluciones
Introducción a la Programación Orientada a Objetos
Un programa es un modelo de la
resolución de un problema
Un lenguaje de programación es una notación formal para especificar
un modelo para la resolución de un problema
Problemas y Soluciones
Introducción a la Programación Orientada a Objetos
Un lenguaje de programación permite modelar datos y acciones.
El lenguaje brinda:
• Tipos de datos elementales y mecanismos para definir nuevos tipos.
•Acciones primitivas y mecanismos para definir nuevas acciones.
Problemas y Soluciones
Introducción a la Programación Orientada a Objetos
El software es el conjunto de programas que permiten que los dispositivos físicos de una computadora puedan ser utilizados.
El desarrollo de software es un proceso a partir del cual se construye
un modelo de la resoluciónde un problema
El proceso de desarrollo de Software
El desarrollo en cascada propone una secuencia específica de etapas para abarcar el proceso de desarrollo de software.
El producto final de este proceso es un sistema de software que resuelve el problema planteado por la especificación de requerimientos.
Todo sistema de software tiene un ciclo de vida durante el cual atraviesa diferentes etapas.
Introducción a la Programación Orientada a Objetos
El proceso de desarrollo de SoftwareEstudio de Factibilidad
Especificación de Requerimientos
Análisis y Diseño del Sistema
Implementación
Verificación
Mantenimiento
DOCUMENTACION
Introducción a la Programación Orientada a Objetos
El proceso de desarrollo de SoftwareEstudio de Factibilidad
Especificación de Requerimientos
Análisis y Diseño del Sistema
Implementación
Verificación
Mantenimiento
DOCUMENTACION
Un sistema de software se desarrolla para satisfacer una demanda.
La funcionalidad del sistema se especifica a partir de un conjunto de requerimientos.
El éxito de un sistema puede medirse en parte de acuerdo a en qué medida los requerimientos establecidos reflejan la demanda real.
El resultado de esta fase es un documento que establece qué hará el sistema y sirve de punto de partida para la documentación.
Introducción a la Programación Orientada a Objetos
El proceso de desarrollo de SoftwareEstudio de Factibilidad
Especificación de Requerimientos
Análisis y Diseño del Sistema
Implementación
Verificación
Mantenimiento
DOCUMENTACION
A partir del análisis de los requerimientos se diseña una solución.
El resultado de esta etapa es un documento que describe los módulos que integrarán el sistema, sus interfases y el modo en que se relacionan entre sí, los casos de prueba.
Existen diferentes herramientas y metodologías para encarar esta etapa y la elección de una de ellas tendrá un fuerte impacto en la elección del lenguaje de programación.
Introducción a la Programación Orientada a Objetos
El proceso de desarrollo de SoftwareEstudio de Factibilidad
Especificación de Requerimientos
Análisis y Diseño del Sistema
Implementación
Verificación
Mantenimiento
DOCUMENTACION
A partir del diseño se genera el programa escrito en un lenguaje de programación y toda la documentación referida al código.
El programa implementado se instala para ser verificado.
Introducción a la Programación Orientada a Objetos
Estudio de Factibilidad
Especificación de Requerimientos
Análisis y Diseño del Sistema
Implementación
Verificación
Mantenimiento
DOCUMENTACION
Se valida la implementación respecto a la especificación de requerimientos.
Existen distintas etapas en la verificación y diferentes formas de hacerlo, algunas informales y otras formales.
Los casos de prueba deberían ser diseñados cuidadosamente.
Una vez verificada la implementación se instala el sistema para su puesta en marcha.
Introducción a la Programación Orientada a Objetos
El proceso de desarrollo de Software
Estudio de Factibilidad
Especificación de Requerimientos
Análisis y Diseño del Sistema
Implementación
Verificación
Mantenimiento
DOCUMENTACION
Durante el ciclo de vida de un programa las necesidades del usuario cambian y normalmente crecen.
El mantenimiento involucra todos los cambios en el software que resultan de modificaciones en la especificación.
Introducción a la Programación Orientada a Objetos
El proceso de desarrollo de Software
Introducción a la Programación Orientada a Objetos
Los graduados de nuestras carreras están capacitados para:•Participar en cada una de las etapas del proceso de desarrollo de software seleccionando y aplicando metodologías y herramientas adecuadas.•Desarrollar nuevas metodologías y herramientas. •Administrar y Evaluar proyectos de software aplicando criterios de calidad y productividad. •Auditar y Certificar proyectos y sistemas de software considerando pautas técnicas y normas de seguridad.•Elaborar pautas técnicas y normas de seguridad que permitan resguardar y controlar recursos físicos y lógicos.
Incumbencias
Calidad de Software
La calidad puede medirse de acuerdo a distintos factores. Algunos de estos factores son percibidos por el usuario o cliente. Otros factores son transparentes para el usuario o cliente, aunque por supuesto lo afectan indirectamente.
Introducción a la Programación Orientada a Objetos
La calidad de un producto de software puede definirse como su capacidad para satisfacer los requisitos establecidos. Parte de los requisitos están establecidos en la especificación de requerimientos.
Calidad de SoftwareCorrectitudUn producto de software correcto actúa de acuerdo a los requerimientos especificados.
EficienciaUn producto de software es eficiente si tiene una baja demanda de recursos de hardware, en particular tiempo de CPU, espacio de memoria y ancho de banda.
PortabilidadUn producto de software es portable si puede ejecutarse sobre diferentes plataforma de hardware y de software.
Introducción a la Programación Orientada a Objetos
Calidad de Software
Introducción a la Programación Orientada a Objetos
SimplicidadUn producto de software es simple si es fácil de usar, su interfaz es amigable y no requiere demasiado entrenamiento ni capacitación.
ConfiabilidadUn producto de software es confiable se reacciona adecuadamente aun en circunstancias no especificadas en los requerimientos.
Productividad de Software
Introducción a la Programación Orientada a Objetos
ExtensibilidadUn producto de software es extensible si es fácil adaptarlo a cambios en la especificación. El primer requerimiento para la extensibilidad es la legibilidad.
ReusabilidadUn módulo de software es reusable si puede utilizarse para la construcción de diferentes aplicaciones.
Programación Orientada a Objetos
La programación orientada a objetos brinda un principio y una metodología que apoya al proceso de desarrollo de software en todas sus etapas.
El lenguaje de programación debe brindar mecanismos que permitan la aplicación de la metodología y contribuyan a favorecer la calidad y productividad.
Introducción a la Programación Orientada a Objetos
El término objeto se utiliza para referirse a dos conceptos relacionados pero diferentes.
En un problema a resolver podemos identificar los objetos o entidades relevantes.
Durante la ejecución del programa que modela el problema se crean objetos de software.
Cada objeto relevante del problema está asociado a un objeto de software que lo representa en ejecución.
Introducción a la Programación Orientada a Objetos
El concepto de Objeto
Introducción a la Programación Orientada a Objetos
ProblemaObjetos Reales
Programa en EjecuciónObjetos de
Software
abstracción
En ejecución, cada objeto del problema esta asociadoa una representación abstracta, un objeto de software
El concepto de Objeto
Los objetos de un problema pueden caracterizarse a través de atributos y un comportamiento.
Un atributo es una propiedad o cualidad y se representa como un dato.
El comportamiento está dado por el conjunto de servicios que el objeto brinda.
Los objetos se agrupan en clases de acuerdo a los atributos y servicios que los caracterizan.
Introducción a la Programación Orientada a Objetos
El concepto de Objeto
Una clase es un patrón o esquema que especifica los atributos y servicios compartidos por todos los objetos que pertenecen a ella.
Las clases se relacionan entre sí de maneras diferentes.
En esta materia vamos a presentar tres formas de relación: dependencia, asociación y herencia.
Introducción a la Programación Orientada a Objetos
El concepto de Clase
En la etapa de análisis de un sistema se identifican objetos y se los caracteriza de acuerdo a sus atributos y su comportamiento.
En la etapa de diseño los objetos se agrupan en clases. Los objetos de una misma clase comparten los mismos atributos y servicios.
El resultado de un diseño orientado a objetos es un diagrama de clases escrito en un lenguaje de modelado.
El diagrama especifica la colección de clases y sus relaciones.
Introducción a la Programación Orientada a Objetos
Objetos y Clases
En la implementación se escribe el código de cada clase en un lenguaje de programación, manteniendo las relaciones especificadas en el diagrama.
En la ejecución del programa se crean objetos de software que son instancias de una clase
En esta etapa una clase puede pensarse como un generador a partir del cual se crean objetos de software.
Introducción a la Programación Orientada a Objetos
Objetos y Clases
Un lenguaje de modelado permite construir distintos tipos de diagramas para describir diferentes aspectos de un sistema de software.
Es una herramienta muy útil para las etapas de diseño e implementación de programas y también para la documentación.
Un diagrama de clases permite especificar la estructura de un sistema en función de las clases que lo componen.
Introducción a la Programación Orientada a Objetos
Diagrama de clases
Las clases son dibujadas como rectángulos conformados por:
Nombre de la clase
Atributos de las instancias
Servicios
Responsabilidades
Comentarios
Introducción a la Programación Orientada a Objetos
Diagrama de clases
Atributos de la clase
Cada atributo va a estar asociado a un tipo.
Los servicios pueden ser constructores, comandos o consultas.
Introducción a la Programación Orientada a Objetos
Por el momento no especificaremos la sección responsabilidades. Usaremos los comentarios para especificar responsabilidades de la clase y de cada servicio.
El diseño puede completarse con elementos adicionales como por ejemplo los casos de prueba.
Diagrama de clases
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
El Ministerio de Educación de una provincia mantiene datos que le permiten obtener información demográfica. El sistema está conformado por varias clases, una de las cuales permite modelar a cada ciudad de la provincia.
Cada ciudad se modela a través de atributos Código Postal, población actual, superficie medida en kilómetros cuadrados y la densidad. Este último valor se obtiene como el cociente entre la población y la superficie de la ciudad.
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real
Se asumen valores no negativos
La responsabilidad de controlar que los valores no son negativos se le asigna a las clases que usen a la clase Ciudad.
Atributos
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Un constructor es un servicio provisto por la clase y se caracteriza porque recibe el mismo nombre que la clase.
El constructor se invoca cuando se crea un objeto y permite inicializar los valores de los atributos de instancia.
Una clase puede brindar varios constructores.
Constructores
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real <<constructores>>Ciudad (c : entero)Ciudad(c: entero,p:entero,s:real)
Este diseño especifica que puede crearse una instancia especificando sólo el código postal o especificando el código, la población y la superficie.
Constructores
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Los comandos son servicios que modifican los valores de los atributos.
Por lo general cada clase ofrece un comando para establecer el valor de cada atributo de instancia.
Comandos
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real
Este diseño especifica que pueden modificarse los valores de la población y la superficie.
<<constructores>>…<<comandos>>establecerPoblacion (pob : entero)establecerSuperficie (sup : real)…
Comandos
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real
El comentario describe la funcionalidad del comando.
<<constructores>>…<<comandos>>…aumentarPoblacion (cre : entero)…
Se incrementa la población de acuerdo al valor actual más cre
Comandos
Introducción a la Programación Orientada a Objetos
Las consultas son servicios que computan un valor y devuelven un resultado (getter).
La inversa no es necesariamente válida, es decir que un servicio devuelva un resultado no lo convierte en una consulta.
Por lo general se incluye una consulta para retornar el valor de cada atributo de instancia.
Caso de Estudio:CiudadConsultas
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real <<constructor>>…<<comandos>>…<<consultas>> obtenerCP(): enteroobtenerPoblación() : enteroobtenerSuperficie() : real…
Consultas
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real <<constructor>>…<<comandos>>…<<consultas>> …densidad () : real
cantidad de habitantes por kilómetro cuadrado. Asume superficie mayor que 0.
Consultas
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Este diagrama implica dos decisiones de diseño importantes:
• la densidad no se mantiene como un atributo sino un servicio que calcula un valor a partir de los otros almacenados
• es responsabilidad de la clase que “usa” el servicio densidad invocarlo sólo si la superficie es mayor que 0.
Decisiones de Diseño
class Ciudad {
…
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
La implementación en Java de este diagrama consiste en definir una clase Ciudad
Ciudad
Atributos de las instancias
Servicios
Responsabilidades
Atributos de la clase
Implementación en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
La palabra class está reservada.
El primer caracter de un identificador debe ser una letra, luego puede estar seguida de otras letras, dígitos, guiones bajos.
Java es sensible a mayúsculas y minúsculas.
Las llaves { } delimitan la definición de la clase. En su interior se definen los atributos y servicios que caracterizan a la clase.
Otros delimitadores cuyo significado iremos viendo son los corchetes, paréntesis, comas, puntos y puntos y comas.
Implementación en Java
Cada atributo va a quedar asociado a un variable o atributo de instancia.
Introducción a la Programación Orientada a Objetos
class Ciudad { private int CP; private int poblacion; private float superficie;}
Caso de Estudio:Ciudad
Ciudad
<<atributos de instancia>>CP: enteropoblacion : enterosuperficie: real
Implementación en Java
Los comentarios se denotan con:
// para comentarios de una línea
/* */ para delimitar comentarios de varias líneas
Java es libre de la línea. El ; es terminador de instrucción.
Introducción a la Programación Orientada a Objetos
La palabra reservada private es un modificador, indica que el alcance de las tres variables es la clase completa.
Caso de Estudio:CiudadImplementación en Java
Si bien Java no exige que las declaraciones aparezcan antes del código, adoptaremos la convención de escribir los atributos antes que los servicios.
Cada variable tiene asociado un tipo.
Los tipos int y float son tipos elementales.
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Un tipo elemental determina un conjunto de valores atómicos y un conjunto de operaciones que se aplican sobre estos valores.
En ejecución, una variable de un tipo elemental mantiene un valor que corresponde al tipo y participa en las operaciones establecidas por su tipo.
Implementación en Java
Introducción a la Programación Orientada a Objetos
public Ciudad ( int c) { CP = c;}
Caso de Estudio:Ciudad
Ciudad
<<constructores>>Ciudad (c : entero)
Un constructor es un servicio que se invoca cuando se crea un objeto de clase Ciudad.
Constructores en Java
Introducción a la Programación Orientada a Objetos
public Ciudad(int c,int p,float s) { CP = c; poblacion = p; superficie = s; }
Caso de Estudio:Ciudad
Ciudad
<<constructores>>Ciudad (c : entero)Ciudad (c : entero, p: entero, s: real)
Constructores en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
El primer constructor recibe un parámetro.
El pasaje de parámetros en Java es por valor.
El valor de la variable c se asigna a la variable CP, que es un atributo de instancia.
Las otras dos variables se inicializan con valores por omisión establecidos de acuerdo al tipo.
Constructores en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
El segundo constructor va a invocarse cuando se cree un objeto de clase Ciudad y se establezcan los valores iniciales de los tres atributos de instancia.
Este constructor recibe tres parámetros.
El nombre Ciudad está sobrecargado.
Constructores en Java
Introducción a la Programación Orientada a Objetos
Si una clase brinda varios constructores el número o tipo de parámetros debe ser diferente en cada uno.
Si en una clase no se define explícitamente un constructor, el compilador crea automáticamente uno.
Si la clase incluye uno o más constructores, el compilador no agrega ningún otro implícitamente.
Caso de Estudio:CiudadConstructores en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
…
<<comandos>>establecerPoblación (p : entero)
public void establecerPoblacion(int p) { poblacion = p ;}
La palabra void indica que el método no retorna un valor.
En Java los comandos y consultas se llaman métodos.
Comandos y Consultas en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
…
<<comandos>>aumentarPoblación (cre : entero)
public void aumentarPoblacion(int cre) {//Se incrementa la población de acuerdo al valor actual más cre
poblacion += cre ;}
Es equivalente a poblacion=poblacion+cre
Se incrementa la población de acuerdo al valor actual más cre
Comandos y Consultas en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
…
<<consultas>>obtenerPoblación (): entero
public int obtenerPoblacion() { return poblacion;}
Comandos y Consultas en Java
Introducción a la Programación Orientada a Objetos
Caso de Estudio:Ciudad
Ciudad
…
<<consultas>>densidad () :real
public float densidad() { //cantidad … return poblacion/superficie;}
cantidad de habitantes por kilómetro cuadrado. Asume superficie mayor que 0.
Java admite expresiones con operandos de diferentes tipos
Comandos y Consultas en Java
Introducción a la Programación Orientada a Objetos
Contenido de esta clase
Presentación de la materia (objetivos, motivación)
Problemas y Soluciones
El proceso de desarrollo de Software. Etapas
Calidad y Productividad
Programación Orientada a Objetos.
Objetos y Clases
Atributos y Servicios
Constructores, Comandos y Consultas
Implementación de Clases en Java
Introducción a la Programación Orientada a Objetos
Contenido de la próxima clase
Objetos y Clases
Atributos de instancia y de clase
Servicios. Constructores, Comandos y Consultas
Modificadores de acceso
Creación y comunicación entre objetos.
Implementación y Verificación de una Clase en Java
Tester con valores establecidos
Alternativas de diseño para Cuenta Bancaria
Top Related