Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e...

60
Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 2013

Transcript of Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e...

Page 1: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 2: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 3: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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…

Page 4: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 5: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 6: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 7: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 8: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

Problemas y Soluciones

Introducción a la Programación Orientada a Objetos

Resolución de un Problema Programa

abstracción

DATOS

ACCIONES

Page 9: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 10: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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.

Page 11: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 12: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 13: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 14: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 15: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 16: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 17: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 18: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 19: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 20: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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.

Page 21: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 22: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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.

Page 23: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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.

Page 24: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 25: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 26: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 27: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 28: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 29: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 30: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 31: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 32: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 33: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 34: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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.

Page 35: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 36: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 37: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 38: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 39: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 40: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 41: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 42: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 43: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 44: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 45: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 46: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 47: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 48: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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.

Page 49: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 50: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 51: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 52: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 53: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 54: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 55: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 56: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 57: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 58: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 59: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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

Page 60: Introducción a la Programación Orientada a Objetos Sonia Rueda Departamento de Ciencias e Ingeniería de la Computación U NIVERSIDAD N ACIONAL DEL S UR.

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