Programación orientada a los objetos
Programacion que usa objetos en sus interacciones, para diseñar aplicaciones y programas informaticos
Características
-Puede corresponder a objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa).
-Su uso se popularizó a principios de la decada de 1900
Conceptos
Polimorfismo
En programación seria la capacidad que tiene una clase en convertirse en un nuevo objeto sin cambiar su esencia y luego volver al objeto origina de donde salió.
-Polimorfismo por Herencia:
Este tipo de polimorfismo es el más común que existe, y tiene la facultad de heredar de una clase padre y reemplazarla.
-Polimorfismo por Abstracción:
Este tipo de polimorfismo se da con el uso de las clases abstractas. Pero que es una clase abstracta es aquella que además de lo normal que contiene una clase tiene comportamientos que si están definidos pero no implementados.
-Polimorfismo por Interface:
Está basado por contratos, que son los encargados de decirme que puedo hacer o no y como debo de hacerlo.
La identidad
Es una propiedad de un objeto que lo diferencia del resto; dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.
Para declarar una clase, todo lo que se necesita es escribir es la palabra reservada "class". Por ejemplo, una clase Persona con campos como el nombre, el departamento, la posición, el una función que nos imprima la información de este quedaría así:
class Persona {
char nombre;
char departamento;
char posicion;
long salario;
void Imprimir( Empleado infoEmpleado);
}char departamento;
char posicion;
long salario;
void Imprimir( Empleado infoEmpleado);
NOTA: Se acostumbra que los nombres de las clases se escriban en singular y con la primera letra en MAYÚSCULAS. Por ejemplo, los nombres de una clase de los objetos del aula seran:
- Alumno.
- Profesor.
- Silla.
- Pizarron.
Las variables de miembro son declaradas privadas para que funciones de miembro de otras funciones no tengan acceso a ellas sino a travez de la correspondiente funcion Get o Set. Las funciones de miembro si son declaradas públicas de tal modo que se pueda acceder a ellas desde otras funciones.
La definición de la función PrintInfo puede quedar así:
void Empleado::ImprimirInfo( )
{
cout << "Nombre: " << m_nombre << '\n';
cout << "Departamento: " << m_departamento << '\n';
cout << "Puesto: " << m_posicion << '\n';
cout << "Salario: " << m_salario << '\n';
{
cout << "Nombre: " << m_nombre << '\n';
cout << "Departamento: " << m_departamento << '\n';
cout << "Puesto: " << m_posicion << '\n';
cout << "Salario: " << m_salario << '\n';
}
Objeto
Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los objetos son entidades que tienen un determinado "estado", "comportamiento (método)" e "identidad":
El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
Ejemplo:
Programa que imprimir el nombre y cédula ingresados
#include <conio.h>
#include <stdio.h>
class Clase {
public:
char nombre [20];
char cedula[10];
public:
void impnom();
void impcedu();
} ;
class ClaseH : Clase{
public:
public:
};
void Clase::impnom() {
printf("Ingrese su nombre\n");
scanf("%s",&nombre);
printf("%s\n",nombre);
}
void Clase::impcedu() {
printf("Ingrese su numero de cedula\n");
scanf("%s",&cedula);
printf("%s\n",cedula);
}
void main() {
Clase datos1;
datos1.impnom();
datos1.impcedu();
getch() ;
}
Corrida de escritorio
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 públicas 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 POO.
Ejemplo:
Programa que realiza que muestra los datos de una persona
Codigo
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
class Datos{
private:
char nombre[10];
int cedula;
public:
void Impnom()
{
printf("Ingrese nom:\n");
scanf("%s",nombre);
}
void Impced()
{
printf("Ingrese ced:\n");
scanf("%i",&cedula);
cout << nombre;
printf("\n");
cout << cedula;
}
};
class DatosH: public Datos{
private:
public:
};
main()
{
DatosH DatosH_1;
DatosH_1.Impnom();
DatosH_1.Impced();
getch();
Encapsulamiento
Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema
Formas de encapsular
Estándar: (Predeterminado)
Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior de la Clase y cualquier parte del programa.
Protegido: Solo es accesible desde la Clase y las clases que heredan a cualquier nivel.
Semi cerrado: Solo es accesible desde la clase heredada.
Cerrado: Solo es accesible desde la Clase.
Existen tres niveles de acceso para el encapsulamiento, los cuales son:
Público (Public): Todos pueden acceder a los datos o métodos de una clase que se definen con este nivel, este es el nivel más bajo, esto es lo que tu quieres que la parte externa vea.
Protegido (Protected): Podemos decir que estás no son de acceso público, solamente son accesibles dentro de su clase y por subclases.
Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.
No hay comentarios:
Publicar un comentario