Investigacion Prog
Investigacion Prog
Investigacion Prog
ORIENTADA A OBJETOS
Periodo:
Enero – Junio /2024
Investigación : tema 2
Alumnos:
Tipos de atributos.
Objetivos:
Modificador Visibilidad
public Pública (+)
protectec Protegida / en la herencia(#)
private Privada(-)
package De paquete (~)
Métodos
Java como todo lenguaje de programación orientado a objetos utiliza los llamados
métodos. A continuación veremos cómo se crea un método y como se utilizan.
Se podría decir que existen 2 grandes tipos de métodos, el primer tipo de método
son métodos que realizan procesos, puedes realizar cualquier operación con ellos,
sin embargo el propósito es manipular variables existentes. El segundo tipo de
métodos son los que realizan un proceso o cálculo, y calculan una variable
específica, un ejemplo podría ser un método para obtener el valor de una
multiplicación.
Los métodos en java pueden tener parámetros, es decir, que un método puede
utilizar variables predefinidas para ser utilizadas en sus procesos.
Encapsulamiento
Como se puede observar de los diagramas, las variables del objeto se localizan en
el centro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto
de otros objetos en el programa. Al empaquetamiento de las variables de un objeto
con la protección de sus métodos se le llama encapsulamiento. Típicamente, el
encapsulamiento es utilizado para esconder detalles de la puesta en práctica no
importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden
cambiar en cualquier tiempo sin afectar otras partes del programa.
Modularidad
esto es, el código fuente de un objeto puede ser escrito, así como darle
mantenimiento, independientemente del código fuente de otros objetos. Así mismo,
un objeto puede ser transferido alrededor del sistema sin alterar su estado y
conducta.
Ocultamiento de la información, es decir, un objeto tiene una "interfaz publica" que
otros objetos pueden utilizar para comunicarse con él. Pero el objeto puede
mantener información y métodos privados que pueden ser cambiados en cualquier
tiempo sin afectar a los otros objetos que dependan de ello.
Los objetos proveen el beneficio de la modularidad y el ocultamiento de la
información. Las clases proveen el beneficio de la reutilización. Los programadores
de software utilizan la misma clase, y por lo tanto el mismo código, una y otra vez
para crear muchos objetos.
En las implantaciones orientadas a objetos se percibe un objeto como un paquete
de datos y procedimientos que se pueden llevar a cabo con estos datos. Esto
encapsula los datos y los procedimientos. La realidad es diferente: los atributos se
relacionan al objeto o instancia y los métodos a la clase. ¿Por qué se hace así? Los
atributos son variables comunes en cada objeto de una clase y cada uno de ellos
puede tener un valor asociado, para cada variable, diferente al que tienen para esa
misma variable los demás objetos. Los métodos, por su parte, pertenecen a la clase
y no se almacenan en cada objeto, puesto que sería un desperdicio almacenar el
mismo procedimiento varias veces y ello va contra el principio de reutilización de
código.
Podemos interpretar que una clase es el plano que describe como es un objeto de
la clase, por tanto podemos entender que a partir de la clase podemos fabricar
objetos. A ese objeto construido se le denomina instancia, y al proceso de construir
un objeto se le llama instanciación.
Cuando se construye un objeto es necesario dar un valor inicial a sus atributos, es
por ello que existe un método especial en cada clase, llamado constructor, que es
ejecutado de forma automática cada vez que es instanciada una variable.
Generalmente el constructor se llama igual que la clase y no devuelve ningún valor.
Análogamente, destructor es un método perteneciente a una clase que es ejecutado
de forma automática cuando un objeto es destruido. Java no soporta los
destructores. Es posible que exista más de un constructor en una clase,
diferenciados sólo en los parámetros que recibe, pero en la instanciación sólo será
utilizado uno de los constructores.
Ejemplo:
clase base
package ejemplo_de_libro;
import java.util.Scanner;
public class Main {
clase derivada
package ejemplo_de_libro;
Cada objeto puede acceder a una referencia a si mismo mediante la palabra this.
Cuando se hace una llamada a un método no static para un objeto especifico, el
cuerpo del método utiliza en forma implícita la palabra this para hacer referencia a
las variables de instancia y los demás métodos del objeto.
//Uso implicito y explicito de this para hacer referencia a los miembros de un objeto
Los métodos definen cual son las operaciones que se pueden realizar con los
atributos de los objetos de la clase. La ejecución de un programa orientado a objetos
consiste, en recibir, interpretar y responder unos objetos a los mensajes que envían
otros objetos. En P.O.O. un mensaje está asociado siempre con un método, de
manera que cuando un objeto recibe un mensaje la respuesta a ese mensaje es
ejecutar el método asociado
Modo de acceso:
Específica el tipo de acceso permitido indicando que usuarios de la clase podrán
acceder a ese método, los métodos son la única forma de acceso a los atributos
privados. Por defecto los métodos tienen protección paquete, es decir son
accesibles desde cualquier clase que pertenezca al mismo paquete. Todas las
clases de un mismo fichero .java pertenecen a un mismo paquete.
• Public: Accesible desde cualquier otra clase.
• Package: Accesible sólo desde el mismo paquete.
• Protected: Se comporta como un método público para los métodos
del mismo paquete o de las subclases y para el resto como un método
privado.
• Prívate: Sólo accesible a través de métodos de la propia clase.
Retorno de valores:
Un método puede devolver un valor a quien lo llama o no devolver nada. El valor
devuelto por un método puede ser de un tipo primitivo de datos o una referencia,
pero nunca puede devolver más de un valor. El valor de retorno nunca puede ser
un objeto de una superclase, sí de la misma clase o de una subclase. Si el método
no devuelve nada el tipo devuelto por el método es el tipo void.
Constructor
Un método constructor de una clase es un método especial que: tiene el mismo
nombre que la clase y no tiene tipo de retorno. La sintaxis para la declaración de
un método constructor es:
Ejemplo :
clase base
package sobrekarga;
Clase articulo
package sobrekarga;
}
public void fijarprecio(String precio){
System.out.println("No es un valor");
}
public void fijaprecio (double precio){
this.precio=precio;
}
public void mostrarprecio(){
System.out.printf("precio es %.2f",precio);
System.out.println();
}
}
Clase edad
package sobrekarga;
A la hora de hablar de operadores vamos a distinguir entre dos tipos, los unarios y
los binarios. Los unarios son aquellos que solo requieren un operando, por ejemplo
a++, en este caso el operando es 'a' y el operador '++'. Los operadores binarios son
aquellos que necesitan dos operadores, por ejemplo a+c , ahora el operador es '+'
y los operandos 'a' y 'c'. Es importante esta distinción ya que la programación se
hará de forma diferente.
Los operadores que podemos sobrecargar son los unarios, +, -, !, ~, ++, --; y los
binarios +, -, *, /, %, &, |, ^, <<, >>. Es importante decir que los operadores de
comparación, ==, !=, <, >, <=, >=, se pueden sobrecargar pero con la condición que
siempre se sobrecargue el complementario, es decir, si sobrecargamos el ==
debemos sobrecargar el !=
Operadores Unarios
En esta sección se verá cómo sobrecargar los operadores unarios, es decir aquellos
que toman un solo operando, como por ejemplo a++. El prototipo de los métodos
que van a sobrecargar operadores unarios será:
public static Operando operator++(Operando a)
Como antes sustituyendo el ++ por cualquier operador unario. El ejemplo dentro de
nuestra clase de números complejos sería:
Para empezar vamos a sobrecargar el operador suma('+') para que al sumar dos
objetos de la clase ComplexNum, es decir dos números complejos obtengamos un
número complejo que será la suma de ambas partes. Cabe destacar que los
prototipos para sobrecargar operadores serán:
public static Operando operator+(Operando a, Operando b)
Este es el prototipo para el operador +, el resto de operadores binarios van a seguir
el mismo patrón. Por tanto el código del método de sobrecarga será el siguiente:
Este método sobrecarga el operador suma para que podamos sumar dos números
complejos. Un dato a tener en cuenta es que los métodos que sobrecargan
operadores deben ser static. Como se ve en el código los operandos son 'a' y 'b',
que se reciben como parámetro y el resultado de la operación es otro número
complejo que es el que retorna el método. Por tanto se limita a crear un nuevo
número complejo con ambas partes operadas. De la misma forma podemos crear
la sobrecarga del operador resta('-') para que lleve a cabo la misma función:
Como vemos el método es idéntico solo que sustituyendo los + por -. En este caso
el trabajo que hacemos dentro del método es trivial pero podría ser tan complejo
como se quisiera.