CLASES
Las
clases son plantillas que agrupan comportamiento (métodos) y estados
(atributos) de los futuros objetos.
Los
objetos son instancias de una clase. Usando el símil “variable – tipo” de la programación estructurada,
se entiendo que un objeto es una variable que
tiene el comportamiento y estados del tipo (objeto)
Una clase es algo abstracto que define la
"forma" del objeto, se podría hablar de la clase como el molde
de los objetos.
En el mundo real existen objetos del mismo tipo,
por ejemplo tu bicicleta es solo una mas de todas las bicicletas del
mundo. Entonces diríamos que tu bicicleta es una instancia de la clase
"Bicicleta". Todas las bicicletas tienen los atributos: color,
cantidad de cambios, dueño y métodos: acelerar, frenar, pasar cambio,
volver cambio.
Las fábricas de bicicletas utilizan moldes para
producir sus productos en serie, de la misma forma en POO utilizaremos la
clase bicicleta (molde) para producir sus instancias (objetos).
Los objetos son instancias de clases.
Ejemplo: Podríamos tener la clase Perro, una
instancia de esta clase podría ser el objeto perro llamado "Chicho". La clase Perro especificaría que todos los
perros tendrían un nombre, color de pelo, una altura. Mientras que la instancia "Chicho"
contendrá valores específicos para cada uno de estos atributos.
Podemos definir a una clase como una plantilla que
define variables y métodos comunes para todos los objetos de cierto tipo.
1
2
3
4
5
6
7
8
9
| public class Persona { public String nombre; public int edad; public void correr(){ /* por implementar */ } } |
y dentro
del cuerpo del programa instanciamos una nueva Persona denominada Esteban:
1
2
3
4
5
6
7
8
9
10
11
| public class Main { public static void main(String[] args) { Persona esteban = new Persona(); // Ahora que esteban es persona, puede correr esteban.corre(); } }
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class SuperHeroe extends Persona{ //Atributos: public String nombreDeFiccion; //Metodos: public void correrMuyRapido(){ //TODO: implementar } public void volar(){ //TODO: implementar } } |
Nota: La palabra clave extends nos indica que Super Heroe está
heredando o extendiendo a la super clase Persona.
programa principal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public class Main { public static void main(String[] args) { // Instanciar al nuevo SuperHeroe: SuperHeroe superPersona = new SuperHeroe(); //Estas son propiedades de Persona: superPersona.nombre = "Carlos Kent" ; superPersona.edad = 37 ; //Esta es propiedad de SuperHeroe: superPersona.nombreDeFiccion = "Super Carlos" ; //Estos son metodos de SuperHeroe: superPersona.volar(); superPersona.correrMuyRapido(); } } |
Mensajes
Un objeto por si solo no tiene mucho significado. Ejemplo: el objeto
"bicicleta" no tiene mucho
sentido si no interactúa con un objeto "persona" que pedalee.
La interacción entre objetos se produce mediante mensajes. Los mensajes
son llamados a
métodos de un objeto en particular.Podemos decir que el objeto persona envía el mensaje "girar a la izquierda"
al objeto bicicleta.
Los mensajes pueden contener parámetros. Por ejemplo teniendo un método en
la clase
bicicleta llamado "Girar" que recibe como parámetro la dirección (derecha o
izquierda).
Polimorfismo
el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes
sintácticamente iguales a objetos de tipos distintos. El único requisito que deben
cumplir los objetos que se utilizan de manera polimórfica es saber responder al
mensaje que se les envía.
#include<iostream>
#include <math.h>
using namespace std;
class Figura {
private:
float base;
float altura;
public:
void captura();
virtual unsigned float perimetro()=0;
virtual unsigned float area()=0;
};
class Rectangulo: public Figura {
public:
void imprime();
unsigned float perimetro(){return 2*(base+altura);}
unsigned float area(){return base*altura;}
};
class Triangulo: public Figura {
public:
void muestra();
unsigned float perimetro(){return 2*sqrt(altura^2+(base/2)^2)+base;} //Usando pitágoras
unsigned float area(){return (base*altura)/2;}
};
void Figura::captura()
{
cout << "CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISÓSCELES Y UN RECTANGULO:" << endl;
cout << "escribe la altura: ";
cin >> altura;
cout << "escribe la base: ";
cin >> base;
cout << "EL PERIMETRO ES: " << perimetro();
cout << "EL AREA ES: " << area();
getchar();
return 0;
}
Encapsulamieto
Abstracción
las cuales distinguen al objeto de los demás.
Volar, parar, etc.
No hay comentarios:
Publicar un comentario