Este documento presenta información sobre programación visual. Detalla los integrantes del proyecto, David Alfonso Clara Mateos e Israel Rescalvo Anastacio en el 4° semestre de Ingeniería Electrónica bajo la guía de la profesora Jiménez rasgado Guillermina. Explica conceptos clave como objetos, clases, abstracción, encapsulación, herencia, polimorfismo y asociación de objetos en programación orientada a objetos.
1. PROGRAMACION VISUAL
Integrantes:
David Alfonso Clara Mateos 12230387
Israel Rescalvo Anastacio 12230433
Carrera: Ing. Electrónica
Grupo: 1
4° Semestre
Docente: Jiménez rasgado Guillermina
2. Objeto
Se puede decir que un objeto es todo aquello que pueda ser
identificable dentro de una especificación de requerimientos
o problema y tenga las siguiente características:
Tenga estados definibles (abierto, cerrado).
Posea comportamientos asociados (puede correr, saltar,
volar, etc). Éstos son denominados métodos.
Son capaces de interactuar/comunicarse con otros
objetos por medio de sus métodos
3. Ejemplo:
Tenemos un automóvil, cuyos atributos son :
Carrocería color verde, espacio para 4 pasajeros, cuatro puertas, cierta
capacidad de carga, 5 velocidades, transmisión automática, velocidad
máxima 200km por hora.
Sus encapsulados serian el chasis, las llantas el motor
Sus funciones son; aceleración, arranque, frenada, alarma,
turbocompresor, etc.
4. Clases
Una clase es un marco que permite crear objetos semejantes;
es decir con las mismas características.
Una clase representa un grupo de objetos que comparten una
misma estructura y un mismo comportamiento; es decir, una
clase representa un grupo de objetos con los mismos atributos
y los mismos métodos.
6. Abstracción
Podemos definir la abstracción como una operación intelectual
que separa las cualidades de un objeto para considerarlas
aisladamente o para analizar al objeto en su pura esencia o
noción.
Básicamente es la capacidad de separar los elementos (al menos
mentalmente) para poder verlos de forma singular. Como
cuando describimos el cuerpo humano y decimos cabeza,
brazo(s), pierna(s), etc.
En los lenguajes de programación orientada a objetos, el
concepto de Clase es la representación y el mecanismo por el
cual se gestionan las abstracciones.
7. Ejemplo:
Gracias a la abstracción, el objeto Tren puede manipular objetos Persona sin
tener en cuenta sus propiedades ni métodos ya que sólo le interesa, por
ejemplo, calcular la cantidad de personas que están viajando en él en ese
momento, sin tener en cuenta ninguna otra información relacionada con dichas
personas, tales como la altura, el nombre, el color de ojos, etcétera.
8. Cohesión
Cohesión es “Es la medida de cuanto una entidad
(componente o clase) se encuentra especializada en
propósito único dentro de un sistema”.
Ejemplo:
9. Encapsulación
La encapsulación es un mecanismo que consiste en organizar
datos y métodos de una estructura, conciliando el modo en que
el objeto se implementa, es decir, evitando el acceso a datos por
cualquier otro medio distinto a los especificados. Por lo tanto, la
encapsulación garantiza la integridad de los datos que contiene
un objeto.
10. Ejemplo:
• System.out.println("Velocidad: " + vehiculo.velocidad
);//Mostrar velocidad
• vehiculo.velocidad = 10;//Asignar velocidad
• Pero supongamos que nosotros no queremos que se pueda acceder de esta manera (por ejemplo,
en el contexto que tengamos una clase Cliente, perteneciente a un banco, nosotros no queremos
que se pueda cambiar el valor del saldo del cliente desde afuera de la clase), por lo tanto,
tendríamos que hacer una encapsulación de nuestra variable (en este caso, la variable velocidad),
para esto, en la declaración de nuestra variable, debemos anteponer la palabra
reservada private antes del tipo de nuestra variable, con esto, le estamos diciendo que nuestra
variable solo puede ser vista desde dentro de nuestra clase (es decir, solo podremos acceder a ella
desde las funciones internas de nuestra clase). Aquí un ejemplo de como convertir nuestra varible
velocidad en privada:
private int velocidad;
11. Herencia
Es una propiedad que permite que los objetos sean creados a
partir de otros ya existentes, obteniendo características
(métodos y atributos) similares a los ya existentes. Es la
relación entre una clase general y otra clase mas especifica.
Es un mecanismo que nos permite crear clases derivadas a
partir de clase base, Nos permite compartir automáticamente
métodos y datos entre clases subclases y objetos.
12. Ejemplo:
El gato y el Perro tendrían
la herencia (métodos y
atributos) del Mamífero.
Mamífero
Gato
Perro
13. Clases abstractas
Tipo de Clases nos permiten crear “método generales”, que recrean un
comportamiento común, pero sin especificar cómo lo hacen. A nivel de código
tienen por particularidad que algunos de sus métodos no tienen “cuerpo de
declaración”, ¿qué quiere decir esto? no tienen las llaves { } ni código dentro de
ellos y deben estar precedidos por la palabra clave abstract. Si una clases
contiene uno o más métodos abstractos está clase debe ser abstracta. Estas
clases como son generalidades no pueden ser instanciadas por ningún objeto
(se dice que su nivel de abstracción es demasiado alto), entonces su único fin es
ser heredado/extendido por otras clases.
14. Ejemplo
En este poco original ejemplo se puede apreciar que toda figura tiene un método para calcular su Área
y Volumen.
1
2
3
4
5
6
7
8
9
1
0
1
1
public abstract class Figura {
// Atributos:
public int numeroLados;
public int area;
public int volumen;
// Métodos:
abstract public void calcularArea();
abstract public void calcularVolumen();
}
- Las clases que hereden de la clase Abstracta deben implementar todos los métodos
abstractos.
- Se debe tener presente que las clases abstractas sí pueden heredar de otras clases.
- La firma o parámetros de los métodos así como el tipo de dato deben respetarse, de lo
contrario se está hablando de otro método totalmente diferente.
15. Interfaces
Las interfaces, tal como las clases abstractas. no se pueden instanciar.
Sus métodos deben ser re-escritos por la clase que implemente.
Permiten separar claramente la funcionalidad de la
implementación
„ Operaciones con sus parámetros y valores de retorno
„ Los clientes interactúan independientemente de la
implementación
„ Pero pueden elegir implementaciones alternativas
16. Ejemplo:
Obtiene la fecha del
sistema mediante
DateTime.Now
•Obliga a implementar los
métodos que contiene en
las clases derivadas de ella.
•Se deben implementar
todos sus métodos, de lo
contrario nos indica un error
17. Polimorfismo
• Es la capacidad que tienen los objetos de una clase de responder al
mismo mensaje o evento en función de los parámetros utilizados
durante su invocación.
18. Hay dos tipos:
Dinámico: es el que el código no incluye ningún tipo de especificación sobre el tipo de
datos.
Estático: es el que los tipos a los que se aplica el polimorfismo deben ser explicitados y
declarados uno por uno antes de ser utilizados.
• Ejemplo
todos los animales comen algo, pero algunos comen carne, otros hierbitas, otros se comen entre si, etc.
class animal {
metodo comer()
}
class carnivoro => es un animal {
redefine metodo comer() { come carne }
}
class herbivoro => es un animal {
redefine metodo comer() { come hierba }
}
class omnivoro => es un animal {
redefine metodo comer() { como de todo }
}
animal leon, tortuga
leon = new carnivoro
tortuga = new herbivoro
leon.comer
toruga.comer
19. Acoplamiento
El acoplamiento es el grado en el cual una clase conoce a las demás. Si
solo la clase A conoce a la clase B, es que B se ha expuesto a través de
su interface, entonces la clase A y la clase B, se las denomina
ligeramente acopladas... eso es algo bueno. Si, por otra parte A se
basa en partes de B que no es parte de la interfaz de B, entonces el
acoplamiento es mas fuerte... y eso no es bueno. En otras palabras si A
conoce mas que lo que debería de B en la manera en que fue
implementado, entonces A y B están fuertemente acoplados.
20. Ejemplo:
De un acoplamiento ajustado, que ha sido ejecutado mediante una pobre
encapsulación:
1class DoTaxes {
2
float rate;
3
float doColorado() {
4
SalesTaxRates str = new SalesTaxRates();
5
rate = str.salesRate; // ouch
6
// esto deberia haber sido llamado
7
// mediante un metodo:
8
// rate = str.getSalesRate("CO");
9
// hacer algo con rate
10
}
11}
12
13class SalesTaxRates {
14
public float salesRate; // deberia ser private
15
public float adjustedSalesRate; // deberia ser private
16
public float getSalesRate(String region) {
17
salesRate = new DoTaxes().doColorado(); // ouch otra vez!
18
// hacer calculos por aqui
19
return adjustedSalesRate;
20
}
21}
21. Asociación de objetos
• Asociación
Es la relación entre dos clases. Permite que en una instancia que un objeto
permita a otro llevar a cabo una acción en su nombre.
con asociación vemos como están relacionados los objetos. La asociación es
una relación de pertenencia. Ej: un empleado pertenece a una empresa. Las
relaciones pueden ser:
• una a una
• una a muchas
• muchas a muchas
22. public class Customer {
private int id;
private String firstName;
private String lastName;
private CreditCard creditCard;
public Customer() {
//Lo que sea que el construtor haga
}
public void setCreditCard(CreditCard creditCard) {
this.creditCard = creditCard;
}
}
• En la asociación:
•
Customer es independiente de CreditCard, puesto que el cliente puede existir sin
necesidad de tener asignada una tarjeta de crédito. Démosle tiempo para que la tramite,
¡Pero no lo dejemos ir!
• Se puede asignar o retirar la tarjeta de crédito, sin que la existencia del Cliente se vea
afectada (No debería verse afectada, esto significa que Customer no debe tronar si no hay
un CreditCard presente).