Programacion Ii Mision Sucre Poo
Programacion Ii Mision Sucre Poo
Programacion Ii Mision Sucre Poo
Qué es un Objeto?
Es una entidad que combina tres aspectos fundamentales, el estado, el comportamiento y la
identidad.
• El estado se refiere a los datos, es decir, uno o varios atributos a los que se habrán asignado
unos valores concretos.
• El comportamiento está definido por los procedimientos o métodos con que puede operar
dicho objeto, es decir, qué operaciones se pueden realizar con él.
• La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras
palabras, es su identificador.
Característica de la POO.
Abstracción: Se refiere a las características esenciales de un objeto que permiten generalizar algo.
Cuando se habla de una mujer, se piensa en una persona de sexo femenino, posiblemente con
cabello largo, joven, etc. cuando se habla de un hombre, se piensa igualmente en una persona pero
con características diferentes; en este caso se puede extraer un término que es común para ambos
seres, y es el término Persona, sin tener en cuenta las características que diferencian a una de otra;
ese es el término abstracto.
Encapsulamiento: esto es reunir todos los elementos suficientes y necesarios de una misma entidad,
para logra una mayor cohesión de los componentes del sistema.
Principio de ocultación: Todos los atributos de un objeto son protegidos para que solo puedan ser
accedidos por sus métodos. Con esto se asegura que otros objetos no puedan cambiar el estado
interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones
inesperadas.
Herencia: los objetos no están aisladas, sino que se relacionan entre sí, formando una jerarquía de
clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia permite la reutilización de código, ya que los objetos de mayor jerarquía
pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele
hacerse habitualmente agrupando los objetos en clases.
En C++, la abstracción y el encapsulamiento esta representado por una clase, la clase es una
abstracción por lo que se definen las propiedades (funciones) y atributos (datos) de un determinado
conjunto de objetos.
class Persona{
//atributos char*
Persona nombre; char*
colorCabello[20]; int
Nombre; colorCabello;
edad; char sexo;
Edad; public:
//métodos
Sexo; int setNombre(char* elNombre, int tam);
char* getNombre();
...
...
}
setNombre();
getNombre();
setColorCabello();
getColorCabello(); setEdad();
getEdad(); setSexo();
getSexo();
El cuerpo de los métodos de la clase, se realiza fuero de la definición de la misma, bajo la siguiente
sintaxis:
Persona::getNombre(){
return nombre;
Toda clase posee dos (2) tipos de métodos especiales: los constructores y los destructores. El
constructor es llamado por el compilador cada vez que se crea un objeto de ese tipo, dicho de otra
forma, el objeto es instanciado y el destructor es llamado siempre que una instancia de la clase se
destruye.
Generalmente los constructores se utilizan para inicializar los atributos de la clase, y llevan el mismo
nombre y el destructor para vaciar espacios de memoria, tambien lleva el nombre de la clase
precedido del símbolo ~. En nuestro ejemplo se vería como sigue:
class Persona{
//atributos char*
nombre; char*
colorCabello[20]; int
edad; char sexo;
public:
//métodos
Persona(); //Constructor int
setNombre(char* elNombre, int tam);
char* getNombre();
...
...
~Persona(); //Destructor
}
Ascendentes
Ordenadas
Descendentes
De acuerdo al orden
de sus elementos
Desordenadas
tipo arreglo
- Secuencial
(Simple y - Son estáticas, porque su tamaño esta limitado
Circular) por el tamaño del arreglo.
Representación Lógica
Método Secuencial: Los elementos de la lista están contiguos físicamente en la memoria y para
su soporte se utiliza el tipo Arreglo. Los accesos a los elementos se efectúan en forma directa, por
medio de un índice, siendo el acceso mas rápido, sin embargo, el crecimiento de la mismas esta
sujeto al tamaño máximo del arreglo.
Especificación Lista[TipoEle]
PILAS:
Son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out): el último en entrar es el
primero en salir). Los elementos se "amontonan" o apilan, de modo que sólo el elemento que está
encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila.
COLAS:
Otro tipo de listas, conocidas como listas FIFO (First In, First Out: El primero en entrar es el primero
en salir). Los elementos se almacenan en fila, pero sólo pueden añadirse por un extremo y leerse
por el otro.
LISTAS CIRCULARES:
También llamadas listas cerradas, son parecidas a las listas enlazadas, pero el último elemento
apunta al primero. De hecho, en las listas circulares no puede hablarse de "primero" ni de "último".
Cualquier nodo puede ser el nodo de entrada y salida. Se recorren siempre en el mismo sentido.
Especificación Pila[TipoEle]
/*******************************
ARCHIVO DE CABECERA pila.h
********************************/
#include <iostream>
#include <cstdlib> using
namespace std; const
int MAXI = 100;
class Pila{
int tope;
int PilaSec[MAXI];
void Pila::EliminarElem(){
if (tope==0){ cout << "\nLa Pila esta
vacia.";
cin.get(); }else
PilaSec[tope--] = 0;
}
int Pila::ConsultaPila(){
if (tope==0){ cout << "\nLa Pila esta
vacia.";
cin.get();
}else return PilaSec[tope-1];
}
}
void Pila::MostrarPila(){ for (int i=tope-1 ; i>=0; i--) cout << "Pos["
<< i + 1 << "] = " << PilaSec[i] << endl;
}
Pila::~Pila(){
tope = 0;
for (int i =0; i<MAXI; i++)
PilaSec[i] = 0;
}
/****************************************** ARCHIVO
DE PRUEBA PARA LA CLASE pila.h
pruebaPila.cpp
*******************************************/
#include <iostream>
#include <cstdlib>
#include "pila.h" using
namespace std;
int main(){
system("clear"); Pila
miPila;
Especificación Cola[TipoEle]
/*******************************
ARCHIVO DE CABECERA cola.h
********************************/
#include <iostream>
#include <cstdlib> using
namespace std; const
int MAXI = 100;
class Cola{
int fin;
int ColaSec[MAXI];
Cola::~Cola(){
/****************************************** ARCHIVO
DE PRUEBA PARA LA CLASE cola.h pruebaCola.cpp
*******************************************/
#include <iostream>
#include <cstdlib>
#include "cola.h" using
namespace std;
1).- Usar el ejemplo pila para obtener el binario de un numero entero dado.
#include <iostream>
#include <cstdlib> #include
"pila.h"
system("clear");
Pila miPila;
parentesisIni = 0;
parentesisFin = 0;
corchetesIni = 0;
corchetesFin = 0;
llavesIni = 0; llavesFin
= 0;
i = 0; while (Ecuacion[i] !=
'\0'){
miPila.InsertaElem(Ecuacion[i++]);
}
parentesisIni++;
break;
case ')':
parentesisFin++;
break;
case '[':
corchetesIni++;
break;
case ']':
corchetesFin++; break;
case '{':
llavesIni++;
break;
case '}':
llavesFin++; break;
}
miPila.EliminarElem();
} if (parentesisIni ==
parentesisFin)
cout << "Paretesis (" << parentesisIni << " abiertos) equilibrados" << endl;
else
cout << "Parentesis (" << parentesisFin << " cerrados) desequilibrados" << endl;
if (corchetesIni == corchetesFin)
cout << "Corchetes (" << corchetesIni << " abiertos) equilibrados." << endl;
else
cout << "Corchetes (" << corchetesFin << " cerrados) desequilibrados" << endl;
if (llavesIni == llavesFin)
cout << "Llaves (" << llavesIni << "abiertos) equilibradas" << endl;
else
cout << "Llaves(" << llavesFin << "cerrados) desequilibradas" << endl;
cout << "\nF I N DEL P R O G R A M A." << endl;
}