
Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten esas características comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS.

Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y mismas características.
Definición teórica: La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase.
Definición Teórica: Una instancia es un objeto de una clase en particular.
.ejemplo
Nombre {
// Variables miembro (habitualmente privadas)
miembro_1; //lista de miembros
miembro_2;
miembro_3;
// Funciones o métodos (habitualmente públicas)
funcion_miembro_1( ); // funciones miembro conocidas
funcion_miembro_2 ( ); // funciones como métodos
// Propiedades (habitualmente públicas)
propiedad_1;
propiedad_2;
propiedad_3;
propiedad_4;
}
Instancia
En un mismo proyecto puedo tener una o más instancias de una misma clase sin problemas.
Cada vez que creamos una nueva instancia, ésta adquiere las propiedades, métodos y eventos de la clase a la que pertenece (es lo que permite la relación es un), sin embargo, cada instancia es independiente de las otras; esto nos da dos ventajas:
1. Si hago algún cambio en la clase, todas las instancias de esta clase se actualizarán automáticamente; esto nos permite hacer cambios sin tener que ir a cada una de las instancias (se aplica el mismo principio de herencia, aunque a un nivel diferente).
2. Al ser independientes de las otras instancias, puedo darles valores diferentes sin que afecten a las demás (como tener una silla negra, una roja, una más alta, etc.). Aunque comparten la misma estructura, pueden programarse individualmente, dando versatilidad y flexibilidad al código.
§ Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
§ Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.
El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes, de este modo se consigue reflejar todos los niveles de generalización que se deseen.
El término extends indica que una clase deriva de otra heredando todas sus propiedades. A una clase derivada de otra se le denomina subclase, mientras que la clase de la cual procede recibe el nombre de superclase. En todo lenguaje orientado a objetos existe una jerarquía de clases relacionadas en base a términos de herencia. En Java el punto más alto de la jerarquía es la clase object de la cual derivan en último término todas las demás clases. Object proporciona una serie de capacidades básicas que son comunes a todas las clases. Si en la definición de la nueva clase no aparece el término extends Java considera que tal clase deriva directamente de object.
El término extends indica que una clase deriva de otra heredando todas sus propiedades. A una clase derivada de otra se le denomina subclase, mientras que la clase de la cual procede recibe el nombre de superclase. En todo lenguaje orientado a objetos existe una jerarquía de clases relacionadas en base a términos de herencia. En Java el punto más alto de la jerarquía es la clase object de la cual derivan en último término todas las demás clases. Object proporciona una serie de capacidades básicas que son comunes a todas las clases. Si en la definición de la nueva clase no aparece el término extends Java considera que tal clase deriva directamente de object.
Polimorfismo significa un objeto y muchas formas, es decir, permite que un método tenga múltiples implementaciones en base al tipo de objeto que se le pasa en la llamada. A esto se le conoce como sobrecarga del método. Los métodos que actúan sobre los objetos requieren información en forma de parámetros. Java es un lenguaje fuertemente equipado, es decir, los tipos deben ser exactamente iguales porque en caso contrario no se entiende el mensaje.
ejem
#include
using namespace std;
class figura {
public:
float base;
float altura;
public:
float 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*altura+base}
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();
};
Los atributos son datos específicos de una clase. En la definición de clase
se indica cuales son los atributos y conque nombre se va a designar a cada uno
de ellos. El que una declaración de atributo sea pública significa que el
elemento definido pueda utilizarse libremente desde cualquier otro punto del
programa.
En el caso de una clase su carácter público es necesario para poder crear
objetos de esa clase en otros puntos del programa (new). Para acceder a
un atributo hay que indicarle el nombre del objeto al que pertenece:
unaEntrada.nombre = "Juan Pablo"
unaEntrada.apellidos = "de Frutos Martínez"
§ metodo: Algoritmo asociado a
un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la
recepción de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un método puede producir un
cambio en las propiedades del objeto, o la generación de un "evento"
con un nuevo mensaje para otro objeto del sistema.
ACCESORES
Las variables
instancia de un objeto son sus atributos, eso que diferencia a un objeto de
otro dentro de la misma clase. Es importante poder modificar y leer estos
atributos; lo que supone definir métodos denominados //accesores de
atributos//. Veremos en un momento que no siempre hay que definir los métodos
accesores explícitamente, pero vayamos paso a paso. Los dos tipos de accesores
son los de //escritura// y los de //lectura//.
|| ruby> class Fruta
ruby| def set_kind(k) # escritor
ruby| @kind = k
ruby| end
ruby| def get_kind # lector
ruby| @kind
ruby| end
ruby| end
nilx
ruby> f1 = Fruta.new
#<Fruta:0x401c4410>
ruby>
f1.set_kind("melocotón") #utilizamos el escritor
"melocotón"
ruby>
f1.get_kind #utilizamos el lector
"melocotón"
ruby> f1
#inspeccionamos el objeto
#<Fruta:0x401c4410
@kind="melocotón">
||
Sencillo;
podemos almacenar y recuperar información sobre la clase de fruta que queremos
tener en cuenta. Pero los nombres de nuestros métodos son un poco largos. Los
siguientes son más breves y convencionales:
|| ruby> class Fruta
ruby| def kind=(k)
ruby| @kind = k
ruby| end
ruby| def kind
ruby| @kind
ruby| end
ruby| end
nil
ruby> f2 = Fruta.new
#<Fruta:0x401c30c4>
ruby>
f2.kind = "banana"
"banana"
ruby>
f2.kind
"banana"
||
PARAMETRO
Un parámetro
es un método para pasar información (valores a variables) del programa
principal a un procedimiento y viceversa.
Un parámetro
es, prácticamente, una variable cuyo valor debe ser ya sea proporcionado por el
programa principal al procedimiento o ser devuelto desde el procedimiento hasta
el programa principal. Por consiguiente, existen dos tipos de parámetros:
- Parámetros de entrada: Sus valores
deben ser proporcionados por el programa principal.
- Parámetros de salida: Son parámetros
cuyos valores se calcularán en el procedimiento y se deben devolver al programa
principal para su proceso posterior.
Transferencia de información desde y/o
hasta los procedimientos
Existen dos
tipos de procedimientos:
- Procedimientos sin parámetros: No
existe comunicación entre el programa principal y los procedimientos ni
viceversa.
- Procedimientos con parámetros: Existe
comunicación entre el programa principal y los procedimientos o entre dos
procedimientos.
Ejemplo 1:
(Parámetros
de entrada)
Procedure
RecuadroDos (N : Integer);
Var
J : Integer;
Begin
For
J := 1 to N do
Write(`*´)
End;
Ejemplo 2:
(Parámetros
de entrada/salida)
El
procedimiento Geometria recibe la longitud y anchura de un rectángulo, calcula
el área y perímetro del rectángulo y devuelve los valores obtenidos al programa
principal.
Procedure
Geometria (Longitud, Anchura : Real; Var Area, Perímetro : Real);
Begin
Area
:= Longitud * Anchura;
Perimetro := 2 * (Longitud + Anchura)
End;
ENCAPSULAMIENTO (INFORMÁTICA)
Enprogramación modular, y más específicamente en programación orientada aobjetos, se denomina encapsulamiento al ocultamiento del estado, es decir, delos datos miembro, de un objeto de manera que sólo se puede cambiar mediante
las operaciones definidas para ese objeto
.
Cada objeto
está aislado del exterior, es un módulo natural, y la aplicación entera se
reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los
datos asociados a un objeto contra su modificación por quien no tenga derecho a
acceder a ellos, eliminando efectos secundarios e interacciones.
De esta forma
el usuario de la clase puede obviar la implementación de los métodos y
propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que
el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.
Encapsulamiento
Se dice que
es el empaquetado de métodos y atributos dentro de un objeto, mediante una
interfaz grafica. La clave está precisamente en el envoltorio del objeto .
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.
No hay comentarios:
Publicar un comentario