INTRODUCCIN A LA PROGRAMACIN ORIENTADA A OBJETOS Asociacin
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Asociación y Dependencia de Clases Sonia Rueda Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 01100 10011 10110 01110 1001 1 11 0 0 1
¿Por qué estudiar Computación en la UNS? Introducción a la Programación Orientada a Objetos 2
Porque los formamos para CREAR lo que no existe y DESARROLLAR soluciones innovadoras para atender problemas actuales y futuros. Introducción a la Programación Orientada a Objetos 3
No hay UNA materia que te enseñe a CREAR. No hay UNA materia en la que aprendas a ser INNOVADOR. Es el recorrido del plan de estudios el que promueve la formación de profesionales creativos e innovadores. Introducción a la Programación Orientada a Objetos 4
ASOCIACIÓN ENTRE CLASES En la programación orientada a objetos el punto de partida para la construcción de un sistema es un proceso de abstracción y clasificación. Los objetos de una clase se caracterizan por los mismos atributos y comportamiento, pero además comparten 0 1 1 0 0 10011 entre sí el mismo modo de relacionarse con objetos 1 0 1 1 0 de otras clases. 01110 01100 Un objeto está asociado a otro objeto, si tiene un atributo 10011 de su clase. 10110 La relación entre los objetos provoca una relación entre 01 10 10 11 0 las clases, que se dicen asociadas. 1 11 0 1 Introducción a la Programación Orientada a Objetos 0 5
CASO DE ESTUDIO: SIGNOS VITALES Los signos vitales son medidas de variaciones fisiológicas que permiten valorar las funciones corporales básicas. Dos de los signos vitales son: la temperatura corporal 01100 y la presión arterial. 10011 10110 El profesional considera que existe un principio de alarma cuando 01110 estos valores escapan de los umbrales establecidos. 01100 10011 10110 01110 1001 1 11 0 0 1 Introducción a la Programación Orientada a Objetos 6
CASO DE ESTUDIO: SIGNOS VITALES La presión arterial es la fuerza de presión ejercida por la sangre circulante sobre las arterias y constituye uno de los principales signos vitales de un paciente. … Los valores de la presión sanguínea se expresan en kilopascales (k. Pa) o en milímetros del mercurio (mm. Hg). Para convertir de mm. Hg a k. Pa el valor se multiplica por 0, 13. Introducción a la Programación Orientada a Objetos 01100 10011 10110 01110 1001 1 11 0 0 1 7
CASO DE ESTUDIO: SIGNOS VITALES Presion. Arterial <<atributos de clase>> umbral. Max, umbral. Min : entero <<atributos de instancia>> maxima, minima : entero <<Constructores>> Presion. Arterial(ma, mi: entero) <<Consultas>> obtener. Maxima(): entero obtener. Minima(): entero obtener. Pulso(): entero alarma. Hipertension(): boolean menor. Pulso(p: Presion. Arterial): entero equals(p: Presion. Arterial): boolean to. String(): String valores representados en milímetros de mercurio requiere ma > mi > 0 obtener. Pulso(): máxima-mínima alarma. Hipertensión: maxima>umbral. Max o minima>umbral. Min 01100 10011 10110 01110 1001 1 11 0 0 1 8
CASO DE ESTUDIO: SIGNOS VITALES valores representados en grados centígrados Signos. Vitales(t: real, p: Presion. Arterial requiere t > 0 p ligado alarma: alarma. Hipertensión o temperatura>umbral. Temp Signos. Vitales <<atributos de clase>> umbral. Temp: real <<atributos de instancia>> temperatura: real presion: Presion. Arterial 01100 <<Constructores>> 10011 Signos. Vitales(t: real, p: Presion. Arterial) 10110 <<Consultas>> 01110 obtener. Temperatura(): real 01100 obtener. Presion(): Presion. Arterial 1 0 0 1 1 alarma(): boolean 10110 equals(s: Signos. Vitales): boolean 0 1 1 1 0 to. String(): String 1001 1 11 0 0 1 9
CASO DE ESTUDIO: SIGNOS VITALES Presion. Arterial <<atributos de clase>> umbral. Max, umbral. Min : entero <<atributos de instancia>> maxima, minima : entero <<Constructores>> Presion. Arterial(ma, mi: entero) <<Consultas>> obtener. Maxima. MM(): entero obtener. Minima. MM(): entero obtener. Maxima. HP(): entero obtener. Minima. HP(). entero obtener. Presion. Pulso. MM(): entero obtener. Presion. Pulso. HP(): entero alarma. Hipertension(): boolean menor. Pulso(p: Presion. Arterial): entero equals(p: Presion. Arterial): boolean to. String(): String Signos. Vitales <<atributos de clase>> umbral. Temp: real <<atributos de instancia>> temperatura: real presion: Presion. Arterial 01100 <<Constructores>> 10011 Signos. Vitales(t: real, p: Presion. Arterial 1 0 1 )1 0 <<Consultas>> 01110 obtener. Temperatura(): real 01100 obtener. Presion(): Presion. Arterial 10011 alarma (): boolean 10110 equals(s: Signos. Vitales): boolean 0 1 1 1 0 to. String(): String 1001 1 11 0 0 1 10
CASO DE ESTUDIO: SIGNOS VITALES class Presion. Arterial { /*Valores representados el milímetros de mercurio*/ //Atributos de clase private static final int umbral. Max=120; private static final int umbral. Min=80; //Atributos de instancia 01100 private int maxima; 10011 10110 private int minima; 01110 //Constructor 01100 public Presion. Arterial(int ma, int mi){ 10011 //Requiere ma > mi > 0 10110 maxima = ma; 01110 minima = mi; 1001 } 1 11 … 0 0 } 1 11
CASO DE ESTUDIO: SIGNOS VITALES //Consultas public int obtener. Maxima(){ return maxima; } public int obtener. Minima(){ return minima; } 01100 10011 10110 01110 1001 1 11 0 0 1 12
CASO DE ESTUDIO: SIGNOS VITALES public int obtener. Presion. Pulso(){ return maxima-minima; } public String to. String (){ return maxima+ " " +minima; } 01100 10011 10110 01110 1001 1 11 0 0 1 13
CASO DE ESTUDIO: SIGNOS VITALES class Signos. Vitales{ //Atributos de clase private static final int umbral. Temp=38; //Atributos de instancia private float temperatura; private Presion. Arterial presion ; 01100 10011 10110 01110 La clase Signos. Vitales tiene. Un atributo de clase 01100 10011 Presion. Arterial. 10110 La clase Signos. Vitales puede acceder a cualquiera de 01110 los miembros públicos de la clase Presion. Arterial. 1 0 0 1 1 11 Los atributos están encapsulados, no son accesibles, 0 0 1 fuera de la clase. Introducción a la Programación Orientada a Objetos 14
CASO DE ESTUDIO: SIGNOS VITALES class Signos. Vitales{ //Atributos de clase private static final umbral. Temp=38; //Atributos de instancia private float temperatura; 01100 10011 private Presion. Arterial presion ; 10110 //Constructor 01110 public Signos. Vitales (float t, 01100 Presion. Arterial p ){ 1 0 0 1 1 //Requiere t > 0 y p ligada temperatura = t; presion = p; } … 10110 01110 1001 1 11 0 0 1 15
CASO DE ESTUDIO: SIGNOS VITALES class Signos. Vitales{ … //Consultas public float obtener. Temperatura (){ return temperatura; } public Presion. Arterial obtener. Presion (){ return presion ; } public boolean alarma(){ return temperatura > umbral. Temp || presion. alarma. Hipertension() ; } } 01100 10011 10110 01110 1001 1 11 0 0 1 16
CASO DE ESTUDIO: SIGNOS VITALES class Signos. Vitales{ … //Consultas public String to. String(){ 01100 return temperatura+" "+presion. to. String(); 10011 } 10110 … 01110 01100 } 10011 La clase Signos. Vitales define un método to. String()1 0 1 1 0 01110 que envía el mensaje to. String() a un objeto de clase 1 0 0 1 Presio. Arterial. 1 11 0 0 NO ES UNA LLAMADA RECURSIVA. 1 Introducción a la Programación Orientada a Objetos 17
CASO DE ESTUDIO: SIGNOS VITALES class Control{ public static void main (String [] a){ //Creación de objetos Presion. Arterial p 6 Hs= new Presion. Arterial(95, 60); Presion. Arterial p 12 Hs= new Presion. Arterial(95, 60); 0 1 1 0 0 10011 10110 Signos. Vitales s 6 Hs = new Signos. Vitales(36. 2, p 6 Hs); 0 1 1 1 0 Signos. Vitales s 12 Hs = new Signos. Vitales(38, p 12 Hs); 0 1 1 0 0 10011 10110 if (s 6 hs. alarma() || s 12 hs. alarma()) 01110 System. out. println(“Estado de alarma”); 1001 } 1 11 } 0 0 1 18
CASO DE ESTUDIO: SIGNOS VITALES Presion. Arterial p 6 Hs= new Presion. Arterial(95, 60); Presion. Arterial p 12 Hs= new Presion. Arterial(95, 60); p 6 Hs p 12 Hs Introducción a la Programación Orientada a Objetos : Presion. Arterial 0 1 1 0 0 10011 maxima = 95 10110 minima = 60 01110 01100 10011 10110 : Presion. Arterial 0 1 1 1 0 1001 maxima = 95 1 11 minima = 60 0 0 1 19
CASO DE ESTUDIO: SIGNOS VITALES Presion. Arterial p 6 Hs= new Presion. Arterial(95, 60); Presion. Arterial p 12 Hs= new Presion. Arterial(95, 60); Signos. Vitales s 6 Hs = new Signos. Vitales(36. 2, p 6 Hs); p 6 Hs : Signos. Vitales s 6 Hs temperatura =36. 2 presion p 12 Hs Introducción a la Programación Orientada a Objetos : Presion. Arterial 0 1 1 0 0 10011 maxima = 95 10110 minima = 60 01110 01100 10011 10110 : Presion. Arterial 0 1 1 1 0 1001 maxima = 95 1 11 minima = 60 0 0 1 20
CASO DE ESTUDIO: SIGNOS VITALES Presion. Arterial p 6 Hs= new Presion. Arterial(95, 60); Presion. Arterial p 12 Hs= new Presion. Arterial(95, 60); Signos. Vitales s 6 Hs = new Signos. Vitales(36. 2, p 6 Hs); Signos. Vitales s 12 Hs = new Signos. Vitales(38, p 12 Hs); p 6 Hs : Signos. Vitales s 6 Hs temperatura =36. 2 presion p 12 Hs : Signos. Vitales s 12 Hs temperatura =38. 0 presion : Presion. Arterial 0 1 1 0 0 10011 maxima = 95 10110 minima = 60 01110 01100 10011 10110 : Presion. Arterial 0 1 1 1 0 1001 maxima = 95 1 11 minima = 60 0 0 1 21
PROVEEDORES Y CLIENTES La clase Presion. Arterial brinda servicios que la clase Signos. Vitales usa. Decimos que clase Presion. Arterial cumple el rol de proveedora y Signos. Vitales es su cliente. 01100 La clase Control también usa los servicios de 10011 Presion. Arterial y además usa a Signos. Vitales. 1 0 1 1 0 01110 De modo que Signos. Vitales es al mismo tiempo cliente 01100 10011 y proveedora. 10110 01110 1001 1 11 0 0 1 Introducción a la Programación Orientada a Objetos 22
CONTRATO La clase Signos. Vitales puede implementarse conociendo qué hace la clase Presion. Arterial , pero no cómo lo hace. La clase Presion. Arterial puede implementarse sin saber que va a ser usada por la clase Signos. Vitales. 0 1 1 0 0 10011 Es decir, cada clase debe conocer los servicios que 10110 brindan sus clases proveedoras, pero no necesita conocer 01110 quienes son sus clientes. 01100 Cada clase va a ser verificada por separado y luego en 1 0 0 1 1 10110 conjunto con las demás clases relacionadas. 01110 Las responsabilidades establecen un contrato entre una 1 0 0 1 1 11 clase, sus clientes y sus proveedores. 0 1 Introducción a la Programación Orientada a Objetos 0 23
- Slides: 23