Sie sind auf Seite 1von 56

Programación

Orientada a
Objetos
Tema2
Clases y Objetos

MRYSI. Ángel Salas Martínez


asalas@tecmartinez.edu.mx
septiembre de 2018
Competencia Tema II

• Aplica los conceptos de clases y objetos en el


desarrollo de programas para solución de problemas
de acuerdo al paradigma orientado a objetos.

septiembre de 2018
Contenido
Clases y Objetos
2.1 Declaración de clases: atributos, métodos, encapsulamiento
2.2 Instanciación de una clase
2.3 Referencia al objeto actual
2.4 Métodos: declaración, mensajes, paso de parámetros, retorno de valores
2.5 Constructores y destructores declaración, uso y aplicaciones
2.6 Sobrecarga de métodos
2.7 Sobrecarga de operadores: Concepto y utilidad, operadores unarios y
binarios

septiembre de 2018
2.1 Declaración de clases: atributos, métodos,
encapsulamiento

Clase
Una clase es una plantilla, modelo o plano a partir de la cual se
crean objetos; los que se derivan de la misma clase tienen
características o propiedades similares; cuando se construye un
objeto de una clase, se dice que se ha creado una instancia,
ejemplar o copia de ésta.

septiembre de 2018
2.1 Declaración de clases: atributos, métodos,
encapsulamiento

Atributos.
• Son los encargados de describir el concepto representado, es decir cada
una de las características del mismo.

Métodos.
• Son las operaciones permitidas por la clase para realizarse sobre los
atributos.

Encapsulamiento.
• Característica de la POO que hace referencia a que en una clase se
incluyen todos los elementos que la componen, de tal manera que forma
una especie de “caja negra”, que contiene todos lo que se necesita y
que no requiere que los usuarios de la misma conozcan su estructura.
Es decir, ocultar los detalles de implementación de la clase. Además
obliga al usuario a utilizar los métodos provistos para el acceso a los
datos, ayudando a si a mantener la seguridad de los mismos datos.

septiembre de 2018
Ejemplo Clase

Perro
-nombre: String
-raza: String
-edad: int
+setEdad(edad:int):void

septiembre de 2018
Ejemplo Clases propias de java

De
Biblioteca

Sin embargo, cuando desarrolle un programa, además de las clases de


las bibliotecas, necesitará crear las propias que describan los objetos
del dominio del problema de sus aplicaciones.
septiembre de 2018
Declaración de clase

septiembre de 2018
Definición de una Clase
[modificador_de_acceso] class Nombre_Clase{
//atributos
[modificador_de_acceso] tipo atributo;
[modificador_de_acceso] tipo atributo;
//métodos
[modificador_de_acceso] tipo nombreMetodo([parámetros]){
….
}
[modificador_de_acceso] tipo nombreMetodo([parámetros]){
…..
}
}

Ejemplo
public class Persona{
private string nombre =“Jose”; Atributos
private int edad; Clase
private String getNombre(){ Método
return nombre;
}
}

septiembre de 2018
Ejemplos de declaración de clases

septiembre de 2018
2.2 Instanciación de una clase
Objetos

El mundo real está plagado de objetos: personas, animales,


plantas, automóviles, edificios, computadoras, teléfonos, casas,
semáforos, lápices, libros, etcétera. Los programas en Java se
componen de muchos objetos para interactuar entre sí y todos
tienen tres características o propiedades clave: estado,
comportamiento e identidad.

septiembre de 2018
Características de los Objetos

•Estado
Los atributos son datos que diferencian un objeto de otro;
el conjunto de ellos constituye su estado; cada objeto
almacena información acerca de su estado actual y en un
momento dado éste corresponde a una selección
determinada de valores posibles de los diversos atributos.

• El estado de un objeto puede cambiar con el tiempo como


consecuencia de llamadas a métodos; si dicho estado
cambiara sin una llamada de un método de ese objeto, se
rompería el principio de encapsulamiento de datos.

septiembre de 2018
Características de los Objetos

Comportamiento
Es el conjunto de capacidades y aptitudes que
describen sus operaciones, funciones y reacciones; además
responde a lo que se puede hacer con dicho objeto o a los
métodos que se le pueden aplicar. Todos los objetos de una
misma clase soportan el mismo comportamiento, el cual se
define por los métodos que se pueden llamar y utilizar para
cambiar sus atributos, recibir información de otros objetos y
enviar mensajes solicitando la ejecución de tareas.

septiembre de 2018
Características de los Objetos

Identidad
Es la propiedad que diferencia un objeto de otro
similar; su estado no describe totalmente al objeto ya que
cada uno tiene distinta identidad; en realidad, éste es el modo
en que un objeto se diferencia de otros que pueden tener el
mismo comportamiento y estado.

septiembre de 2018
Identificación de Clase y
Objetos

La regla más simple para identificar clases


es buscar
nombres en el análisis del problema y en su dominio
de definición; los métodos, por el contrario,
corresponden a verbos;

septiembre de 2018
Identificación de Clase y
Objetos
por ejemplo, en un sistema de operaciones en un
banco, algunos nombres de clase pueden ser:

• préstamo
• cuenta corriente
• acción
• fondo

septiembre de 2018
Identificación de Clase y
Objetos
Por ejemplo, en el caso de un sistema de pedidos a
un almacén, los nombres pueden ser:

• artículo
• pedido
• dirección de envío
• sistemas de pago
• cuenta del banco

septiembre de 2018
Identificación de Clase y
Objetos
• En una clase se proporcionan uno o más métodos que se
diseñarán para ejecutar las tareas.

• Una clase que representa un pedido a un comercio, por


ejemplo, puede tener varios métodos: añadir un artículo,
retirarlo, aceptar un pedido, o cancelarlo, es decir, verbos como
añadir, retirar, aceptar, cancelar, etcétera.

• Otro ejemplo es una clase que representa la cuenta corriente de


un cliente en un banco y que puede tener los métodos:
depositar dinero en la cuenta, retirarlo, transferirlo a otra
cuenta o solicitar el saldo.

septiembre de 2018
Relaciones entre clases

Las relaciones entre clases son similares a las relaciones entre


objetos físicos del mundo real o entre objetos imaginarios en
un mundo virtual; en UML, las formas en las que se conectan entre sí
las clases, lógica o físicamente, se modelan como relaciones. En el
modelado orientado a objetos existen tres clases de relaciones
importantes:
•Dependencias
•Generalizaciones-Especializaciones
• Asociaciones-Agregaciones

septiembre de 2018
Ejemplo Instancia de clase (objeto)

clase Instancia de clase (Objeto)

Perro miPerro:Perro
-nombre: String -nombre: “cupido”
-raza: String -raza: “french poodle”
-edad: int -edad: 3
+setEdad(edad:int):void +setEdad(edad:int):void

septiembre de 2018
2.2 Instanciación de una clase
Sintaxis creación de objeto

nombre_clase nombre_objeto = new nombre_clase();


Cuando se crea un objeto de una clase, se invoca al constructor de dicha clase, que es un
método que se llama igual que la clase y no devuelve ningún tipo de dato pero si puede recibir
parámetros.
El constructor de una clase se ejecuta cada vez que se crea un objeto.
Ejemplo clase Ejemplo objeto
public class persona{ public class principal{
private string nombre =“Jose”; persona persona1 = new persona();
private int edad;
persona1.getNombre();
public persona(){ }
}
private String getNombre(){
return nombre;
}
}
septiembre de 2018
Buenas practicas

• El nombre de las clases comienza con letras mayúsculas, si estuviera formada por
mas palabras, cada una de ellas debe iniciar con mayúscula.
• Generalmente el nombre de la clase es un sustantivo en singular.
• El nombre de la clase debe expresar claramente el concepto que se esta
representando.
• El nombre de los atributos se escribe en minúscula.
• El nombre de los métodos es un verbo seguido de alguna o varias palabras que
den más información acerca de lo que hace el método, el método se escribe con
letras minúsculas y la inicial de la siguiente palabra en mayúscula.
• Crear un archivo por clase.
• El nombre del archivo es igual a la clase que almacena.

septiembre de 2018
Practica1_ClasesyObjetos
Crear las siguientes clases en NetBeans

septiembre de 2018
Practica1_ClasesyObjetos
Crear los siguientes objetos en NetBeans

Clases

Objetos

septiembre de 2018
Practica2_ClasesyObjetos

Crear las crear un proyecto nombrado: Practica2_ClasesyObjetos,


donde tendrá que modificar la clase Alumno agregando los siguientes
atributos: (Calif1, calif2 y calif3,promedio) y la función llamada
promedio, misma que recibida como parámetros las tres calificaciones

septiembre de 2018
2.3 Referencia al objeto actual

• Una referencia a un objeto que envía un mensaje es this, o


simplemente, una referencia al objeto que llama a un
método, aunque este no debe ser static, internamente se
define como:
Final NombreClase this;

Por lo que no pueden modificarse; las variables y métodos de


las clases se referencian implícitamente por this;

septiembre de 2018
Ejemplo

public class Triangulo{ En el método área() se hace referencia a las


private double base; variables instancia base y altura, ¿De que objeto?
private double altura; El método es común para todos los objetos
Triangulo; aparentemente no distingue entre uno y
public double area(){ otro objeto, sin embargo cada variable de instancia
return base*altura/2.0; implícitamente esta cuantificada por this; es como
si estuviera escrito:
}

} public class Triangulo{


private double base;
private double altura;

public double area(){


return this.base*this.altura/2.0;
}

}
septiembre de 2018
This tiene 2 usos fundamentales.

• Primero: seleccionar explícitamente un miembro de una clase con el fin


de dar mas claridad o de evitar colisión de identificadores; por ejemplo:

public class Triangulo{


private double base;
private double altura;

public void datosTriangulo(double base,double altura){


this.base =base;
this.altura= altura;
}

}
Se evita la colisión entre argumentos y variables de instancias
septiembre de 2018
This tiene 2 usos fundamentales.

• Segundo: Que un método devuelva el mismo objeto que le llamo; de esa manera se
pueden hacer llamadas en cascada a métodos de la misma clase; nuevamente se
define la clase triangulo.
public class Triangulo{
private double base;
private double altura;
public Triangulo datosTriangulo(double base,double altura){
this.base =base;
this.altura= altura;
return this; Ahora se pueden concatenar llamadas a
} métodos de un objeto de tipo triangulo.
public double area(){
return base*altura/2.0;
}
public Triangulo visualizar(){ Triangulo t = new Trinagulo();
System.out.println(“ Base = ” + base); t.datosTriangulo(15.0,12.0).visualizar();
System.out.println(“ Altura = ” + altura);
return this;
}
}
septiembre de 2018
2.4 Métodos: declaración, mensajes, paso de
parámetros, retorno de valores

• Una clase consta de 2 elementos principales: variables de instancia y métodos.

Métodos
Son bloques de código con nombre, tipo de acceso, tipo de retorno y una lista
de argumentos o parámetros; también se puede incluir las palabras claves
como static, abstract y final.
(Joyanes,2011)

• Los métodos en java equivalen a las funciones en otros lenguajes de programación, con la excepción
de las sentencias de declaración de objetos y variables, así como los bloques de inicialización estatica,
todo el código ejecutable de java se sitúa dentro de un método; la definición de un método consta de
2 partes: cabecera y cuerpo.
Donde:
Sintaxis Tipo: es el tipo de dato devuelto por el
método, cualquier tipo de dato incluyendo
Tipo nombre ([lista de parametros]) //cabecera tipos de clase que se pueda crear.
{ Nombre: identifica el método; como inicial
siempre se debe usar minúscula.
//cuerpo
}
septiembre de 2018
2.4 Métodos: declaración, mensajes, paso de
parámetros, retorno de valores.

• Si el método no devuelve un valor, su tipo de retorno es void .

• Si los métodos devuelven a la rutina llamadora un tipo de dato distinto


de void, deben utilizar una sentencia de retorno, por ejemplo:

return valor;

• Un método siempre se debe declarar dentro de una clase.

septiembre de 2018
Ejemplo de Métodos

void saludoBienvenida ( ) {
System.out.println(“ ¡ Hola !” );
System.out.println(“Método llamado
saludoBienvenida” );
System.out.println(“incluye tres líneas de código” );
}

Class Saludo{
void saludoBienvenida ( ) {
System.out.println(“ ¡ Hola !” ); Saludo objetoSaludo = new Saludo();
System.out.println(“Método llamado saludoBienvenida” ); objetoSaludo. saludoBienvenida( );
System.out.println(“incluye tres líneas de código” );
}
}

septiembre de 2018
Ejemplo de métodos

Integrando todo en un solo ejercicio

Class Saludo{
void saludoBienvenida ( ) {
System.out.println(“ ¡ Hola !” );
System.out.println(“Método llamado saludoBienvenida” );
System.out.println(“incluye tres líneas de código” );
}
publi static void main (String[] arg ) {
Saludo objetoSaludo = new Saludo();
objetoSaludo. saludoBienvenida( );
}
}

septiembre de 2018
2.4 Métodos: declaración, mensajes, paso de
parámetros, retorno de valores.

• En java los argumentos se pasan a los métodos por valor; se hace


una copia del tipo de dato primitivo, como int, float, double, etc, o
a la referencia al objeto de la clase o array, y se pasa al método.

• Algunos métodos no necesitan parámetros, aunque la mayoría sí;


los parámetros permiten que un método sea generalizado, es
decir, que pueda operar sobre una gran variedad de datos o que
pueda utilizarse en situaciones diferentes; por ejemplo:
Método que retorna el cuadrado de 5 Método que retorna el cuadrado de x
numero

int cuadrado ( ) { int cuadrado ( int x) {


return 5*5; return x*x;
} }
septiembre de 2018
Ejemplo Métodos: Paso de parámetros

• Empleando el método
int cuadrado ( int x) {
return x*x;
}

Int m,n;
m = cuadrado ( 10); //se pasa el valor 10; m es igual a 100
n = cuadrado ( 15); //se pasa el valor 15; n es igual a 255
n=5
m = cuadrado ( n); //se pasa el valor de n; m = 25
}
septiembre de 2018
Escribir un programa que implemente el uso de un método con argumento
de tipo entero, que devuelva la letra P si es numero positivo , y la letra N si
es negativo.

Escribir un método que convierta una temperatura dada en grados celcius


a grados Farenheit: la formula;

9
𝐹 = 𝐶 + 32
5

septiembre de 2018
Métodos: paso de parámetro por valor

• El paso por valor o por copia significa que cuando se llama al


método, este recibe una copia de los valores de los
parámetros; si el método cambia el valor de un parámetro,
no tiene efecto fuera del método, solo afecta a este.

Ejemplo
void calMetodo ( ) { 6
int i=6; 6
metodo2(i);
} void metodo2 (int n ) {
int k=9;
n+=k;
}

septiembre de 2018
Ejemplo

class PorValor{

publi static void main (String[] arg ) {


int n = 10;
System.out.println(“Antes de llamar a demoLocal, n=”+n);
demoLocal(n);
System.out.println(“Despues de llamar a demoLocal, n=”+n);
}
static void demoLocal (int valor ) {
System.out.println(“Dentro de demoLocal, valor=”+valor);
Valor=999;
System.out.println(“Dentro de demoLocal, valor=”+valor);
}

Salida
Antes de llamar a demoLocal, n = 10
Dentro de demoLocal valor = 10
Dentro de demoLocal valor = 999
septiembre de 2018
Después de llamar de demoLocal valor = 10
Método: Paso por objeto

class Julian{ class principal{


publi static void main (String[] arg ) {
String fecha;
//crea objeto de clase julian
int dia;
Julian jan = new Julian();
Julian ( ) { //muestra valores actuales
fecha = “01-feb-2018”; System.out.println(“propiedades de objeto en creación ”);
dia = 1; jan.mostrar();

} System.out.println(“llamada a método que modifica objeto”);


modifica(jan);
static void mostrar( ) {
System.out.println(“propiedades de objeto modificado”);
System.out.println(“fecha actual: “+fecha+ jan.mostrar();
“\t dia: ”+dia); }
} static void modifica (Julian obj ) {

} //se modifica la variable de instancia juli


obj.fecha= “01-Ago-2018”;
obj.dia = 23;
}

Salida
propiedades de objeto en creación
Fecha actual: 01-feb-2018 dia: 1
propiedades de objeto en modificado….
septiembre de 2018 Fecha actual: 01-Ago-2018 dia: 23
Ejemplo por valor

septiembre de 2018
Sobrecarga de métodos

Investigar Sobrecarga de Métodos

septiembre de 2018
2.5 Constructores y destructores declaración, uso
y aplicaciones

Un constructor es un método que se ejecuta automáticamente


cuando se crea un objeto de una clase; sirve para inicializar los
miembros de la misma.

El constructor tiene el mismo nombre que clase; cuando se define,


no se puede especificar un valor de retorno porque nunca
devuelve uno; sin embargo, puede tomar cualquier número de
argumentos.

septiembre de 2018
2.5 Constructores y destructores declaración, uso
y aplicaciones

• Constructor por defecto


Un constructor que no tiene parámetros se llama constructor
por defecto; el cual normalmente inicializa los miembros dato de
la clase con valores predeterminados.
2.5 Constructores y destructores declaración, uso
y aplicaciones

• Constructores sobrecargados
Al igual que se puede sobrecargar un método de una clase,
también se puede sobrecargar su constructor; de hecho, los
constructores sobrecargados son bastante frecuentes porque
proporcionan diferentes opciones de inicializar objetos.
Constructores sobrecargados
2.6 Sobrecarga de métodos

Un método sobrecargado se utiliza para


reutilizar el nombre de un método pero con
diferentes argumentos (opcionalmente un tipo
diferente de retorno).

septiembre de 2018
2.6 Sobrecarga de métodos

Las reglas para sobrecargar un método son


las siguientes:
• Los métodos sobrecargados deben de cambiar la lista de
argumentos.
• Pueden cambiar el tipo de retorno.
• Pueden cambiar el modificador de acceso.
• Pueden declarar nuevas o más amplias excepciones.
• Un método puede ser sobrecargado en la misma clase o en una
subclase.

septiembre de 2018
Sobrecarga de Métodos

Lo que define qué método es el que se va a llamar son los


argumentos que se envían al mismo durante la llamada.
Si se invoca a un método con un String como argumento, se
ejecutará el método que tome un String como argumento.
si se manda a llamar al mismo método pero con un float
como argumento, se ejecutará el método que tome un float
como argumento y así sucesivamente.
Si se invoca a un método con un argumento que no es
definido en ninguna de las versiones sobrecargadas entonces
el compilador arrojará un mensaje de error.

septiembre de 2018
Ejemplo Sobrecarga de
Métodos

public void cambiarTamano(int tamano, String nombre, float patron){ }

public void cambiarTamano(int tamano, String nombre){}


public int cambiarTamano(int tamano, float patron){}
public void cambiarTamano(float patron, String nombre) throws IOException{}

septiembre de 2018
Sobrecarga de Métodos VS Sobreescritura

• Sobrecarga.
permite usar el mismo nombre del método pero solo si se tiene diferente
parámetros.
Permite declarar métodos que se llamen igual pero que reciban
parámetros diferentes (no pueden haber 2 métodos con el mismo
nombre y los mismos parámetros), por esta razón lo que define a que
método se ingresa, son los argumentos que se envían como
parámetros....

septiembre de 2018
Ejemplo de Sobrecarga de Constructores y
métodos

septiembre de 2018
Sobrecarga de Métodos VS Sobre escritura

• Sobrecarga.
permite usar el mismo nombre del método pero solo si se tiene diferente
parámetros.
Permite declarar métodos que se llamen igual pero que reciban
parámetros diferentes (no pueden haber 2 métodos con el mismo
nombre y los mismos parámetros), por esta razón lo que define a que
método se ingresa, son los argumentos que se envían como
parámetros....

•Sobre escritura
Es la forma por la cual una clase que hereda puede re-definir los métodos
de su clase Padre, de esta manera puede crear nuevos métodos con el
mismo nombre de su superClase

septiembre de 2018
2.7 Sobrecarga de operadores: Concepto y
utilidad, operadores unarios y binarios

La sobrecarga de operadores:
Es la capacidad para transformar los operadores de un
lenguaje como por ejemplo el +, -, etc.
Cuando se dice transformar se refiere a que los operandos que
entran en juego no tienen que ser los que admite el lenguaje
por defecto. Mediante esta técnica podemos sumar dos
objetos creados por nosotros o un objeto y un entero, en vez
de limitarnos a sumar números enteros o reales, por ejemplo.
sorprendentemente java no lo incorpora, así que podemos decir que esta
característica es una ventaja de c# respecto a java, aunque mucha gente, esta
posibilidad, no lo considera una ventaja porque complica el código.

septiembre de 2018
El único aspecto de Java que se acerca a la sobrecarga del
operador "personalizado" es el manejo de + para cadenas,
que da como resultado la concatenación de constantes en
tiempo de compilación o la concatenación en tiempo de
ejecución utilizando StringBuilder / StringBuffer. No puedes
definir tus propios operadores que actúen de la misma
manera.

septiembre de 2018
• Escribir un programa para obtener la hipotenusa de un
triángulo rectángulo a partir de las longitudes de los catetos.
Entrada
Cateto Opuesto = 40
b Cateto Adyacente= 60

septiembre de 2018
Bibliografía Sugerida

1 Dean J. y Dean R. (2009) Introducción a la programación con Java.: McGraw


Hill
2 Deitel P., Deitel H. (2013). Como programar en java. 9a. Edición. Pearson.
3 Gutiérrez F., Duran F., Pimentel E. (2007). Programación Orientada a
Objetos con JAVA:
Ediciones Paraninfo, S.A.
4 Harvey M. (2008). Como programa en Java. México: Prentice Hall

septiembre de 2018

Das könnte Ihnen auch gefallen