Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porBernardo Río Gallego Modificado hace 7 años
1
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Objetos y Clases Sonia Rueda Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca
2
EN ESTA CLASE Las etapas del proceso de desarrollo Clases como tipos
El estado interno de un objeto Alcance de las variables Asignación de variables de tipo clase Parámetros de tipo clase Resultados de tipo clase Introducción a la Programación Orientada a Objetos
3
EL PROCESO DE DESARROLLO DE SOFTWARE
Estudio de Factibilidad Durante el desarrollo de requerimientos y el diseño del sistema se identifican los objetos del problema y se los agrupa en clases en base a sus atributos y su comportamiento. Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos
4
EL PROCESO DE DESARROLLO DE SOFTWARE
Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema La implementación consiste en escribir el código de cada clase usando un lenguaje de programación. Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos
5
EL PROCESO DE DESARROLLO DE SOFTWARE
Estudio de Factibilidad Si el proceso se completa exitosamente el producto final es un sistema de software que satisface una necesidad, oportunidad o idea. Desarrollo de Requerimientos Diseño del Sistema Implementación En la etapa de verificación se chequea que el comportamiento de cada clase sea correcto para un conjunto de casos de prueba y que el sistema satisfaga los requerimientos. Verificación Mantenimiento Introducción a la Programación Orientada a Objetos
6
EL CONCEPTO DE CLASE Durante las etapas de desarrollo de requerimiento y diseño de un sistema orientado a objetos, se identifican los objetos del problema y se los agrupa en clases. Cada clase es un patrón que define los atributos y el comportamiento de un conjunto de objetos del problema. La colección de clases y sus relaciones se grafican en un diagrama de clases. Introducción a la Programación Orientada a Objetos
7
EL CONCEPTO DE CLASE En la implementación de un sistema orientado a objetos, cada clase del diagrama, se traduce en un módulo de código escrito en un lenguaje de programación. Así, una clase, es un módulo de software que se desarrolla con cierta independencia de los demás y se integra luego de ser verificado, para formar parte del sistema. En la ejecución de del sistema se crean objetos de software cuyo estado interno y servicios dependen de su clase. Introducción a la Programación Orientada a Objetos
8
CLASES COMO TIPOS Un tipo de dato, establece un conjunto de valores y un conjunto de operaciones que se aplican a esos valores. Una clase que especifica un conjunto de atributos y servicios, define un tipo de dato a partir del cual es posible declarar variables y crear objetos. El conjunto de valores queda determinado por los valores de los atributos. El conjunto de operaciones lo definen los servicios provistos por la clase. Introducción a la Programación Orientada a Objetos
9
CLASES COMO TIPOS PresionArterial <<atributos de clase>>
umbralMax,umbralMin :real <<atributos de instancia>> maxima,minima :real <<Constructores>> PresionArterial(ma, mi: entero) <<Consultas>> obtenerMaxima(): entero obtenerMinima(): entero obtenerPulso(): entero alarmaHipertension(): boolean toString():String menorPulso(pa:PresionArterial):real valores representados en milímetros de mercurio requiere ma < mi < 0 obtenerPulso(): máxima-mínima alarmaHipertensión: maxima>umbralMax o minima>umbralMin menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro Introducción a la Programación Orientada a Objetos
10
CLASES COMO TIPOS La clase PresionArterial define un tipo de dato.
class PresionArterial { //Atributos de clase //Atributos de instancia //Constructor //Consultas } La clase PresionArterial define un tipo de dato. El conjunto de valores está formado por un subconjunto de los pares {float,float}. El contrato asegura que los atributos tomarán valores dentro de un subconjunto de los reales. El conjunto de operaciones está formado por los servicios, en este caso el constructor y las consultas, provistos por la clase.
11
CLASES COMO TIPOS class PresionArterial { //Atributos de clase
//Valores expresados en milímetros de mercurio //Atributos de clase private static final float umbralMax=140; private static final float umbralMin=90; //Atributos de instancia private int maxima; private int minima; //Constructor public PresionArterial(int ma,int mi){ //Requiere ma > mi> 0 maxima = ma; minima = mi; ...
12
CLASES COMO TIPOS //Consultas public float obtenerMaxima() { return maxima;} public float obtenerMinima() { return minima;} public float obtenerPulso() {// pulso=maxima-minima return maxima-minima;} public boolean alarmaHipertension() {/*maxima>umbralMax o minima>umbralMin*/ return maxima > umbralMax || minima > umbralMin;} }
13
CLASES COMO TIPOS public String toString() { return maxima+"/"+minima; } public float menorPulso(PresionArterial pa){ /*menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro*/ if (obtenerPulso() < pa.obtenerPulso()) return obtenerPulso(); else return pa.obtenerPulso();
14
CLASES COMO TIPOS class testPresionArterial {
public static void main (String a[]){ PresionArterial med; } La clase testPresionArterial usa a la clase PresionArterial, declara una variable med de tipo clase PresionArterial.
15
CLASES COMO TIPOS class testPresionArterial {
public static void main (String a[]){ PresionArterial med; med = new PresionArterial(140,65); } La variable med queda ligada a un objeto cuyos atributos toman valores dentro del conjunto de valores que establece el tipo clase PresionArterial.
16
CLASES COMO TIPOS class testPresionArterial {
public static void main (String a[]){ PresionArterial med; med = new PresionArterial(140,65); System.out.println(med.obtenerPulso()) ; } El objeto ligado a la variable med recibe el mensaje obtenerPulso(), que provoca la ejecución de una operación provista por el tipo.
17
CLASES COMO TIPOS class testPresionArterial {
public static void main (String a[]){ PresionArterial med; med = new PresionArterial(140,65); System.out.println(med.toString (); if (med.alarmaHipertension()) System.out.println ("Medicion hipertensa"); } El objeto ligado a la variable med recibe el mensaje alarmaHipertension(), que provoca la ejecución de una operación provista por el tipo.
18
VARIABLES y TIPOS El tipo de una variable puede ser: Elemental
Una clase El valor de una variable de un tipo elemental pertenece al conjunto de valores definido por el tipo. En Java todos los tipos elementales están provistos por el lenguajes. El valor de una variable de un tipo clase es una referencia. Una referencia puede ser nula o estar ligada a un objeto.
19
VARIABLES y OBJETOS La declaración: PresionArterial med;
crea una variable de tipo clase PresionArterial, cuyo valor es una referencia nula o referencia no ligada. La asignación: med = new PresionArterial (140,65); crea un objeto de clase PresionArterial.
20
DIAGRAMA DE OBJETOS La declaración: PresionArterial med;
Se modela dibujando la variable y la referencia nula. PresionArterial med; med Introducción a la Programación Orientada a Objetos
21
DIAGRAMA DE OBJETOS La asignación:
Se modela dibujando la variable, el objeto y la referencia ligada. med = new PresionArterial(140,65); med :PresionArterial maxima=140 minima=65 El objeto de software de clase PresionArterial representa a una entidad, esto es, un objeto del problema. Introducción a la Programación Orientada a Objetos
22
VARIABLES y OBJETOS La instrucción:
Declara la variable med de tipo PresionArterial Crea un objeto de clase PresionArterial Liga el objeto a la variable PresionArterial med= new PresionArterial(140,65); La creación de un objeto implica: Reservar espacio en memoria para mantener los valores de los atributos Invocar al constructor
23
DIAGRAMA DE OBJETOS Un diagrama de objetos es una representación gráfica que permite modelar objetos y referencias. med :PresionArterial maxima=140 minima=65 Cada declaración, asignación o mensaje, puede provocar un cambio en el diagrama de objetos. Introducción a la Programación Orientada a Objetos
24
MENSAJES Y MÉTODOS Cuando un objeto recibe un mensaje, su clase determina el método que se va a ejecutar en respuesta a ese mensaje. La clase PresionArterial brinda la consulta toString que retorna una cadena de caracteres. Cuando un objeto de clase PresionArterial recibe el mensaje toString se ejecuta el método provisto por esa clase y retorna una cadena de caracteres como resultado. Análogamente si un objeto de clase PresionArterial recibe el mensaje obtenerPulso ejecuta el método provisto por su clase y retorna un entero. Introducción a la Programación Orientada a Objetos
25
MENSAJES Y MÉTODOS La instrucción: float p = med.obtenerPulso();
Retorna el valor 75 y lo asigna a p med :PresionArterial maxima=140 minima=65 p= 75 p= public float obtenerPulso() {// pulso=maxima-minima return maxima-minima;} Introducción a la Programación Orientada a Objetos
26
EL ESTADO INTERNO El estado interno de un objeto queda determinado por los atributos de instancia de su clase. Una variable de tipo clase está ligada si mantiene una referencia al estado interno de un objeto. La programación orientada a objetos propone que una vez que se crea un objeto su estado interno solo puede ser modificado a través de los comandos provistos por la clase. Introducción a la Programación Orientada a Objetos
27
EL ESTADO INTERNO class PresionArterial { //Valores expresados en milímetros de mercurio //Atributos de instancia private int maxima; private int minima; El estado interno de un objeto de clase PresionArterial está formado por los atributos maxima y minima. El modificador private asegura que el estado interno de cada objeto de clase PresionArterial NO pueda ser modificado desde el exterior de la clase.
28
EL ESTADO INTERNO class testPresionArterial {
public static void main (String a[]){ PresionArterial med=new PresionArterial(140,65); El constructor de la clase inicializa el estado interno del objeto. public PresionArterial(int ma,int mi){ //Requiere ma < mi< 0 maxima = ma; minima = mi; }
29
EL ESTADO INTERNO class testPresionArterial {
public static void main (String a[]){ PresionArterial med=new PresionArterial(140,65); med :PresionArterial maxima= 140 minima=65 El diagrama de objetos modela el estado interno del objeto y sus referencias.
30
EL ESTADO INTERNO class testPresionArterial {
public static void main (String a[]){ PresionArterial med=new PresionArterial(140,65); System.out.println(med.toString()); med :PresionArterial maxima= 140 minima=65 140/65 El método toString genera una cadena de caracteres que representa el estado interno del objeto.
31
ALCANCE DE LAS VARIABLES
class PresionArterial { //Valores expresados en milímetros de mercurio //Atributos de instancia private int maxima; private int minima; //Constructor public PresionArterial(int ma,int mi) {//Requiere ma < mi< 0 maxima = ma; minima = mi;} public int obtenerMaxima() { return maxima;} public int obtenerMinima() { return minima;} public int obtenerPulso() {// pulso=maxima-minima return maxima-minima;} ... } class testPresionArterial { public static void main (String a[]){ PresionArterial med = new PresionArterial(140,65); … } main puede acceder a la variable med de tipo clase PresionArterial. Los servicios de la clase PresionArterial pueden acceder a maxima y minima umbralMax y umbralMin
32
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDos { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = m1; System.out.println(m1.toString()); System.out.println(m2.toString()); } } m1 m2
33
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDos { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = m1; System.out.println(m1.toString()); System.out.println(m2.toString()); } } m1 :PresionArterial maxima=150 minima =75 m2
34
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDos { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = m1; System.out.println(m1.toString()); System.out.println(m2.toString()); } } Se asigna una referencia. m1 :PresionArterial maxima=150 minima =75 m2
35
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDos { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = m1; System.out.println(m1.toString()); System.out.println(m2.toString()); } } m1 :PresionArterial maxima=150 minima =75 150 75 m2
36
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDos { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = m1; System.out.println(m1.toString()); System.out.println(m2.toString()); } } m1 :PresionArterial maxima=150 minima =75 150/75 m2
37
PARÁMETROS DE TIPO CLASE
class testminimas { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = new PresionArterial (150,72); float m = m1.menorPulso(m2); System.out.println("Menor Pulso" +m); } m es una variable de tipo elemental. m1 y m2 son variables de tipo clase, mantienen referencias. m, m1 y m2 son locales al método main.
38
PARÁMETROS DE TIPO CLASE
:PresionArterial maxima=150 minima=75 m2 :PresionArterial maxima=150 minima=72 PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = new PresionArterial(150,72); Cada objeto de software modela a un objeto del problema, en este caso una medición de la presión arterial de un paciente.
39
PARÁMETROS DE TIPO CLASE
m = m1.menorPulso( m2 ); Envía el mensaje menorPulso al objeto ligado a la variable m1. El parámetro real m2 es una variable de tipo clase, es decir una referencia a un objeto de clase PresionArterial. public float menorPulso (PresionArterial pa){ /*menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro*/ if (obtenerPulso() < pa.obtenerPulso()) return obtenerPulso(); else return pa.obtenerPulso(); } Introducción a la Programación Orientada a Objetos
40
PARÁMETROS DE TIPO CLASE
m = m1.menorPulso( m2 ); Al comenzar la ejecución el valor de la variable m2 se asigna al parámetro pa. La variable pa solo va a existir durante la ejecución de menorPulso. public float menorPulso (PresionArterial pa ){ /*menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro*/ if (obtenerPulso() < pa.obtenerPulso()) return obtenerPulso(); else return pa.obtenerPulso(); } Introducción a la Programación Orientada a Objetos
41
PARÁMETROS DE TIPO CLASE
m = m1.menorPulso( m2 ); m1 :PresionArterial maxima=150 minima=75 m2 :PresionArterial maxima=150 minima=72 m= pa Las variables m2 y pa mantienen referencias a un mismo objeto. public float menorPulso (PresionArterial pa){ /*menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro*/ if (obtenerPulso() < pa.obtenerPulso()) return obtenerPulso(); else return pa.obtenerPulso(); } Introducción a la Programación Orientada a Objetos
42
PARÁMETROS DE TIPO CLASE
m = m1.menorPulso(m2); m = m1.menorPulso( m2 ); m1 :PresionArterial maxima=150 minima=75 m2 :PresionArterial maxima=150 minima=72 m= pa Compara el pulso del objeto que recibe el mensaje, con el pulso del objeto que recibe como parámetro. public float menorPulso (PresionArterial pa){ /*menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro*/ if (obtenerPulso() < pa.obtenerPulso()) return obtenerPulso(); else return pa.obtenerPulso(); } Introducción a la Programación Orientada a Objetos
43
PARÁMETROS DE TIPO CLASE
m = m1.menorPulso(m2); m = m1.menorPulso( m2 ); m1 :PresionArterial maxima=150 minima=75 m2 :PresionArterial maxima=150 minima=72 m=75 pa En este ejemplo retorna el valor del pulso del objeto que recibe el mensaje. public float menorPulso (PresionArterial pa){ /*menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro*/ if (obtenerPulso() < pa.obtenerPulso()) return obtenerPulso(); else return pa.obtenerPulso(); } Introducción a la Programación Orientada a Objetos
44
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
Cada objeto de software tiene una identidad, una propiedad que lo distingue de los demás. La referencia a un objeto puede ser usada como propiedad para identificarlo. Si dos variables son iguales, mantienen una misma referencia, entonces están ligadas a un mismo objeto. Cuando dos objetos mantienen el mismo estado interno, decimos que son equivalentes, aun cuando tienen diferente identidad. Introducción a la Programación Orientada a Objetos
45
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
class testReferencias { public static void main (String a[]){ boolean ig1,ig2,ig3; PresionArterial m1,m2,m3,m4; m1 = new PresionArterial(150,75); m2 = new PresionArterial(150,72); m3 = m1; m4 = new PresionArterial(150,75); ig1 = m1 == m2; ig2 = m1 == m3; ig3 = m1 == m4; }
46
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
m1 :PresionArterial maxima=150 minima=75 m2 :PresionArterial maxima=150 minima=72 m3 m4 :PresionArterial maxima=150 minima=75 ig1 = m1 == m2; ig2 = m1 == m3; ig3 = m1 == m4; El operador relacional == compara variables de tipo clase, esto es referencias.
47
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
class testEstadoInterno { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = new PresionArterial(150,75); if(m1.obtenerMaxima()==m2.obtenerMaxima() && m1.obtenerMinima()==m2.obtenerMinima ()) System.out.println("Igual Estado Interno"); } El operador relacional == compara valores de variables elementales.
48
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
Dos objetos que tienen el mismo estado interno son equivalentes. m1 :PresionArterial maxima=150 minima=75 m2 :PresionArterial maxima=150 minima=75
49
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
PresionArterial <<Atributos de instancia<< maxima, minima: entero <<Constructores<< PresionArterial(ma, mi: entero) <<Consultas<< obtenerMaxima(): entero obtenerMinima(): entero obtenerPulso(): entero alarmaHipertension(): boolean toString():String menorPulso(pa:PresionArterial):real equals(pa:PresionArterial):boolean valores representados en milímetros de mercurio requiere ma < mi < 0 obtenerPulso(): máxima-mínima alarmaHipertensión: maxima<140 o minima<80 menorPulso: retorna el menor pulso entre la medición que recibe el mensaje y la recibe como parámetro Introducción a la Programación Orientada a Objetos
50
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
class PresionArterial { //Valores expresados en milímetros de mercurio //Atributos de instancia private int maxima; private int minima; ... public boolean equals(PresionArterial pa){ return maxima == pa.obtenerMaxima() && minima == pa.obtenerMinima(); }
51
IDENTIDAD, IGUALDAD Y EQUIVALENCIA
class testEstadoInterno { public static void main (String a[]){ PresionArterial m1,m2; m1 = new PresionArterial(150,75); m2 = new PresionArterial(150,75); if(m1.equals(m2)) System.out.println("Igual Estado Interno"); }
52
EN ESTA CLASE Clases como tipos El estado interno de un objeto
Alcance de las variables Asignación de variables de tipo clase Parámetros de tipo clase Resultados de tipo clase Introducción a la Programación Orientada a Objetos
53
EN LA PROXIMA CLASE Asumimos
Comprenden los conceptos de objeto, clase, atributo, constructor, comando y consulta Interpretan un diagrama de objetos Introducción a la Programación Orientada a Objetos
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.