Cursos subvencionados para trabajadores
Realiza el curso gratis a través de tu empresa.
Cursos SubvencionadosExisten una serie de principios fundamentales para comprender cómo se modeliza la realidad al crear un programa bajo el paradigma de la orientación a objetos. Estos principios son:
Abstracción
Encapsulación
Modularidad
Herencia
Paso de mensajes
Polimorfismo
Relaciones entre objetos
Visibilidad
Inscríbete ahora y accede a 1 unidades gratis
Evalua el curso de UML y accede a las 1 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....
Mediante la abstracción la mente humana modeliza la realidad en forma de objetos. Para ello busca parecidos entre la realidad y la posible implementación de objetos del programa que simulen el funcionamiento de los objetos reales.
Los seres humanos no pensamos en las cosas como un conjunto de cosas menores; por ejemplo, no vemos un cuerpo humano como un conjunto de células. Los humanos entendemos la realidad como objetos con comportamientos bien definidos. No necesitamos conocer los detalles de porqué ni cómo funcionan las cosas; simplemente solicitamos determinadas acciones en espera de una respuesta; cuando una persona desea desplazarse, su cuerpo le responde comenzando a caminar.
Pero la abstracción humana se gestiona de una manera jerárquica, dividiendo sucesivamente sistemas complejos en conjuntos de subsistemas, para así entender más fácilmente la realidad. Esta es la forma de pensar que la orientación a objeto intenta cubrir.
Inscríbete ahora y accede a 1 unidades gratis
Evalua el curso de UML y accede a las 1 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....
Permite a los objetos elegir qué información es publicada y qué información es ocultada al resto de los objetos. Para ello los objetos suelen presentar sus métodos como públicos y sus atributos como privados e inaccesibles desde otros objetos. Esto se hace para dotar al programador de mecanismos que permitan aplicar lógica de control y validación cuando otros objetos consulten o modifiquen los atributos.
Con el encapsulado de los datos se consigue que las personas que utilicen un objeto sólo tengan que comprender su interfaz, olvidándose de cómo está implementada, y en definitiva, reduciendo la complejidad de utilización.
En la clase CuentaBancaria los métodos setters permiten actuar del modo comentado anteriormente, mientras que los getters acceden al valor de los atributos
...
public
double getSaldo() {return saldo;
}
public
void setSaldo(double saldo) { if(saldo < 0)// Mostrar mensaje al usuario indicándole que no es posible
else
this.saldo = saldo;
}
public String getNumero() {return numero;
}
public void setNumero(String numero) {this.numero = numero;
}
public String getTitular() {return titular;
}
public void setTitular(String titular) {this.titular = titular;
}
...
Inscríbete ahora y accede a 1 unidades gratis
Evalua el curso de UML y accede a las 1 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....
Mediante la modularidad, se propone al programador dividir su aplicación en varios módulos diferentes (ya sea en forma de clases, paquetes o bibliotecas), cada uno de ellos con un sentido propio.
Esta fragmentación disminuye el grado de dificultad del problema al que da respuesta el programa, pues se afronta el problema como un conjunto de problemas de menor dificultad, además de facilitar la comprensión del programa.
Inscríbete ahora y accede a 1 unidades gratis
Evalua el curso de UML y accede a las 1 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....
La mayoría de nosotros ve de manera natural nuestro mundo como objetos que se relacionan entre sí de una manera jerárquica. Por ejemplo, un perro es un mamífero, y los mamíferos son animales, y los animales seres vivos...
Del mismo modo, las distintas clases de un programa se organizan mediante la herencia.

Mediante la herencia una clase hija o subclase puede usar propiedades de su clase padre o superclase. De este modo se simplifican los diseños y se evita la duplicación de código al no tener que volver a codificar métodos ya implementados.
A veces interesa modificar el comportamiento de un método heredado. Para conseguirlo se redefine o sobrepone o sobrescribe (overriding en inglés) el método
Con la misma firma (mismo número de argumentos, mismo tipo de datos y en el mismo orden)
y
Con el mismo tipo de retorno
en la subclase, pero cambiando el código del método en función de las necesidades de programación.
Ejemplo1:



Ejemplo2: CuentaBancaria superclase de CuentaAhorros, CuentaPlatino y CuentaDeposito
package
cuentabancaria;// Cuenta bancaria de tipo ahorro: se emplean los mets depositar y retirar de su superclase CuentaBancaria
// Si se retira una cantidad sup al saldo, se lanza una NoFondosDisponiblesException
public
class CuentaAhorros extends CuentaBancaria{private static String tipo = "Cuenta de ahorros"; public CuentaAhorros(){} public CuentaAhorros(String numeroCuenta, String titularCuenta, double cantidadInicial) {
super(numeroCuenta, titularCuenta, cantidadInicial);
}
public String getTipo() {return tipo;
}
}
package
cuentabancaria;// Cuenta bancaria tipo platino: se emplea el met depositar de su superclase CuentaBancaria
// y se redefine el met retirar. De qué modo?
// Un titular de este tipo de cuenta dispone de un límite admisible en descubierto de 2500,
// que será utilizado cuando se intente retirar una cantidad que supere el saldo de la cuenta.
// Si se retira una cantidad sup al saldo + descubierto permitido, se lanza una NoFondosDisponiblesException
public
class CuentaPlatino extends CuentaBancaria {private static String tipo = "Cuenta platino"; private static final double limiteDescubierto = 2500.00; private double fondosDisponibles; public CuentaPlatino() {} public CuentaPlatino(String numeroCuenta, String titularCuenta, double cantidadInicial) {
super(numeroCuenta, titularCuenta, cantidadInicial);
}
// Redefinición del met retirarpublic void retirar(double cantidad) throws NoFondosDisponiblesException {
// En vez de colocarlo en el constructor, lo hacemos aquí para evitar errores cuando depositas y retiras en una ejecución
// En la vida real es algo que no se prevé hacer, pero bueno...
fondosDisponibles = limiteDescubierto + getSaldo();
// Si el saldo es superior a la cantidad, se retira siguiendo los cauces normales, esto es, invocando a la superclase
if(getSaldo() >= cantidad){
super.retirar(cantidad);
}
// Si el saldo es inferior a la cantidad, se usa el limite de descubierto disponible.
else{
// La cantidad a retirar no supera el saldo + limite descubierto
if(cantidad <= fondosDisponibles){
fondosDisponibles = fondosDisponibles - cantidad;
setSaldo(getSaldo() - cantidad);
}
// La cantidad a retirar supera el saldo + limite descubierto
else
throw new NoFondosDisponiblesException("No hay suficientes fondos");
}
}
public double getLimiteDescubierto() {
return limiteDescubierto;
}
public double getFondosDisponibles() {
return fondosDisponibles;
}
public void setFondosDisponibles(double fondosDisponibles){
this.fondosDisponibles = fondosDisponibles;
}
public String getTipo() {
return tipo;
}
}
package
cuentabancaria;// Cuenta bancaria tipo depósito: se emplea el met retirar de su superclase CuentaBancaria y se redefine el met depositar. De qué modo?
// Al depositar una cantidad igual o superior a 1000, el banco le ingresa la cantidad más el 5% de la misma
// Si se retira una cantidad sup al saldo, se lanza una NoFondosDisponiblesException
public
class CuentaDeposito extends CuentaBancaria {private static String tipo = "Cuenta depósito"; private static final double interes = 5; public CuentaDeposito() {} public CuentaDeposito(String numeroCuenta, String titularCuenta, double cantidadInicial) {
super(numeroCuenta, titularCuenta, cantidadInicial);
}
// Redefinición del met depositar de CuentaBancariapublic void depositar(double cantidad){
// Si deposita una cantidad igual o sup a 1000, el banco le ingresa la cantidad
// más un extra del 5% de la misma
if(cantidad >= 1000){
setSaldo(getSaldo() + cantidad + cantidad*interes/100);
}
else
super.depositar(cantidad);
}
public String getTipo() {
return tipo;
}
}
Inscríbete ahora y accede a 1 unidades gratis
Evalua el curso de UML y accede a las 1 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....
Copyright 2008© ADRInfor S.L. Logroño | Tel: 941250116 Fax: 941236805 | Email | Politica de Privacidad