Está en la página 1de 48

Introducción a la POO

JUAN CARLOS CONDE RAMÍREZ


OBJECT-ORIENTED PROGRAMMING
La Tecnología Orientada a Objetos
•Se ha dicho que la Tecnología Orientada a Objetos es una metodología, un paradigma, una
tecnología de empaquetamiento, un método de análisis y diseño, y hasta un nuevo lenguaje
para datos abstractos.

•Planteada como una herramienta para construir modelos funcionales de Sistemas Físicos
complejos que pudieran contener varios miles de componentes.

FCC-BUAP 2
Objetivo del curso
•Conocer el ambiente de trabajo utilizando los conceptos de la Programación Orientada a
Objetos

•Familiarizarse con los conceptos de Clase y Objetos.

•Aplicar la POO en el desarrollo de aplicaciones.

FCC-BUAP 3
Situación actual
•La tecnología orientada a objetos es ya una realidad, sinónimo de calidad y robustez.

•Su impacto aparece en todos los ámbitos del quehacer informático.

•Las empresas desarrolladoras de software no solo están creando nuevos productos Orientados a
Objetos, están reestructurando sus productos ya existentes, usando Lenguajes Orientados a
Objetos.

•Obteniendo como resultado flexibilidad, modularidad y reusabilidad, en un esfuerzo por


enfrentar la dinámica de cambio y la competencia comercial en tiempos de mercados
globalizados.

FCC-BUAP 4
¿Cómo hemos llegado hasta aquí?
•Programación modular: invención de la subrutina a principios de los años 50’s

•Programación Estructurada: (60’s) descomposición funcional, un programa se descompone en


partes componentes, en sub-partes componentes y así sucesivamente.

•Ingeniería de Software Asistida por Computadora (CASE): Automatización de la programación a


partir de diagramas.

•Lenguajes de Cuarta Generación (4GL’s): conjunto de herramientas para la creación de


aplicaciones, incluyendo formas, reportes, etc.

FCC-BUAP 5
Opciones disponibles
•Los esfuerzos para mejorar el desarrollo del software, se han enfocado hasta ahora en la
modularización de los procedimientos, separando el otro ingrediente de la ecuación de Niklaus
Wirth

Algoritmos + Estructuras de Datos = Programas

es decir, la colección de información sobre la que operan los procedimientos.

FCC-BUAP 6
Los Objetos
•El concepto de Objetos surgió de la necesidad de modelar los objetos del mundo real en
simulaciones por computadora.

•Un objeto se define, entonces, como una unidad de software que contiene una colección de
datos y procedimientos interrelacionados y que es capaz de recibir mensajes del exterior.

•Los datos definen el estado del Objeto en cualquier momento y los procedimientos que definen
el comportamiento de un Objeto.

FCC-BUAP 7
Clases
•Una Clase es un tipo definido por el usuario, ya que generaliza el concepto de Estructura y lo
reemplaza con ventaja.

•Una Clase es un prototipo que define los métodos y datos que serán incluidos en un tipo de
objeto particular, así que los objetos son instancias de las clases.

FCC-BUAP 8
Los lenguajes POO
•Simula-67 (intento académico prehistórico).

•Los lenguajes Orientados a Objetos más conocidos comercialmente:

◦ Java ◦ Visual Basic


◦ C++ ◦ Visual Fox Pro
◦ C# ◦ Object Pascal
◦ Objective-C ◦ Ada
◦ Phyton ◦ Lisp
◦ Perl ◦ Etc.
◦ PHP
◦ JavaScript

FCC-BUAP 9
Objeto Computacional

Def. Representación en memoria de una abstracción del mundo real, un ente


encapsulado que contiene Datos y Métodos, y que es capaz de recibir mensajes
del exterior.

FCC-BUAP 10
Mensajes

•La forma en que los Objetos interactúan entre si, es enviando mensajes pidiendo que se active
(ejecute) un método específico.

•Un mensaje consiste simplemente del nombre del Objeto a quien va dirigido, seguido del
nombre del Método que el receptor sabe como ejecutar (usar parámetros en caso de ser
necesario).

FCC-BUAP 11
Conceptos Relacionados
•El ESTADO de un objeto acompaña todas las propiedades (generalmente estáticas) además de
sus valores actuales (generalmente dinámicos) de cada una de esas propiedades.

•La CONDUCTA es como un objeto actúa y reacciona, en términos de sus cambios de estado y
paso de mensajes.

•La IDENTIDAD es la propiedad de un objeto


que lo distingue de los otros objetos

FCC-BUAP 12
Abstracción
•Una abstracción denota las características esenciales de un objeto para distinguirlo de otro tipo
de objetos y así proveer límites conceptuales bien definidos, relativos a la perspectiva del
observador.

FCC-BUAP 13
Tipo
•El tipo es el reforzamiento de la clase de un objeto, semejante a los objetos de diferentes tipos
que no deberían ser intercambiados, o a lo más, deberían ser intercambiados de modo muy
restringido.

FCC-BUAP 14
Encapsulamiento
•Mecanismo por medio del cual, un objeto esconde sus datos y métodos al mundo exterior. El
encapsulamiento permite proteger los datos de transformaciones no deseadas, y sólo bajo
autorización del propio objeto.
•Encapsulación es el proceso de departamentalizar los elementos de una abstracción que
constituye su estructura y conducta; sirve para separar la interfaz de una abstracción de su
implementación.

FCC-BUAP 15
Modularidad
•Es la propiedad de un sistema que ha sido descompuesto en un conjunto de módulos altamente
cohesivos y mínimamente acoplados

FCC-BUAP 16
Jerarquía
•La jerarquía es una clasificación u ordenamiento de abstracciones

a) Herencia Simple y Múltiple (“es un”)


b) Agregación (“parte de”)

FCC-BUAP 17
Herencia
•Es un mecanismo por el cual, una clase de objetos puede expresarse como un caso especial de
un clase más general, es decir, incluye automáticamente toda la definición de datos y métodos
de la clase general.

“Subclases” y “Superclases”

FCC-BUAP 18
Herencia
• Es el proceso por medio del cual, un objeto puede adquirir las propiedades de otro objeto.

• La importancia de la herencia se basa en que constituye un mecanismo que soporta la


clasificación.

• La herencia puede ser simple o múltiple

FCC-BUAP 19
Polimorfismo
•Es la posibilidad de que un nombre (identificador), pueda ser usado con diferentes propósitos,
aunque relacionados semánticamente (interface y múltiples métodos).

◦ Sobrecarga de Operadores

◦ Sobrecarga de Funciones

◦ Sobrecarga de Constructores

◦ Polimorfismo de Herencia

◦ Funciones Virtuales

FCC-BUAP 20
Concurrencia
•La Concurrencia permite a distintos objetos actuar al mismo tiempo.

FCC-BUAP 21
Persistencia
•La persistencia es una propiedad de un objeto a través de la cual, su existencia trasciende al
tiempo y/o espacio.
•Por ejemplo:
◦ El objeto continua existiendo después de que su creador deja de existir y/o espacio
◦ La locación de un objeto se mueve de un espacio de ubicación del que fue creado.

FCC-BUAP 22
Preliminares
•Todo programa en lenguaje C++ debe tener la siguiente extensión:

file.c, file.cc // en UNIX


file.cpp // en Windows/ MS-DOS

•Comentarios en C++
/* Este es un comentario */
/* Es también es un
comentario
multilíneas */
// comentario unilineal

FCC-BUAP 23
Programa principal
•Todos los programas deben tener un main():

◦ main() es la función llamada por el Sistema Operativo.

◦ main() regresa 0 y significa que termino con éxito.

◦ Las llaves { } denotan el cuerpo del programa.

◦ Toda declaración termina con un punto y coma (“;”)

FCC-BUAP 24
Un primer programa
#include <iostream.h> // librería de encabezado

int main() // función principal

{ // inicio del cuerpo del programa

float a, b, c; // declaración de variables reales

cin >> a >> b; // entrada de datos

c = a + b; // suma

cout << “ La suma es : “ << c << endl; // salida de datos

return 0; // termino del programa

} // fin del cuerpo de la función main

FCC-BUAP 25
Tipos de datos en C++
bool Lógicos
char Caracter*1
short Entero*2
int , int long Entero*4
float Real*4
double Real*8
int x,y; // variables enteras

float s; // variable real

char a[10]; // a = arreglo de 10 caracteres

FCC-BUAP 26
Operadores
Operación Descripción #include <iostream.h>
x+y suma int main()
x–y resta {
x* y multiplicación int i = 1;
cout << i << “, “ ;
x/y división
cout << (++i ) << “, “ ;
x%y modulo cout << i << “, “ ;
+x positivo cout << (i++) << “, “ ;
-y negativo cout << i << endl;
return 0;
x++ Pos incremento
++x Pre incremento }

x-- Pos decremento


--x Pre decremento Salida : 1, 2, 2, 2, 3

FCC-BUAP 27
....más operadores
Operación Op. De Relación Operación Op. Lógicos

x<y Menor que 0 Valor falso

x <= y Menor o igual que No-cero Valor verdadero

x>y Mayor que !x Negación

x >= y Mayor o igual que x && y and

x == y Igual x ¦¦ y or

x != y Diferente

Donde && y || se evalúan de izquierda a derecha

FCC-BUAP 28
Operadores para manejo de bits
Operación Descripción char x; // Binario

-i Complemento
// Operación
i&j And
x=7; 0 0 0 0 0 1 1 1 //(Asignación)
iˆj Or exclusivo
i¦j Or inclusivo x << 1; 0 0 0 0 1 1 1 0 //14(x*2)
i << j Corrimiento a la x << 3; 0 1 1 1 0 0 0 0 //112(x*8)
izquierda
x << 2; 1 1 0 0 0 0 0 0 //192(x*4-2^8)
i >> j Corrimiento a la x >> 1; 0 1 1 0 0 0 0 0 //96(x/2)
derecha
x >> 2; 0 0 0 1 1 0 0 0 //24(x/4)

FCC-BUAP 29
Estructura de un Lenguaje de
Programación
•Un programa en Lenguaje C/C++ está formado por las siguientes estructuras:

◦ Entrada y Salida: cin y cout


◦ Decisión: if-else y switch
◦ Repetición: for, while, do-while

• Importante dentro del lenguaje:

◦ Funciones: por valor y por referencia


◦ Arreglos : unidimensionales y mutidimensionales
◦ Estructuras: struct

FCC-BUAP 30
Estructuras de Decisión
if [else]: #include <iostream.h>

El if se utiliza para verificar si una int main()


expresión es verdadera (se ejecuta las {
sentencias1) o si la expresión es falsa (se
ejecutan las sentencias2). int a;
cout << “Da un numero: “ ;
if (expresión) cin >>a ;

{ if (a>=0 && (a%2==0))


sentencias1; cout << a <<“ Es par positivo \n”;
else if (a>=0 && (a%2==1))
} cout << a <<“ Es impar positivo \n”;
else if (a<0 && (a%2==0))
else cout <<a<<“ Es Negativo Par \n”;
else
{
cout <<a<<“ Es Negativo impar \n”;
sentencia2;
return 0;
} }

FCC-BUAP 31
Estructuras de Decisión
switch: char ch;
cin >> ch;
Se utiliza para verificar una de varias
opciones.
switch (ch)
switch (expression) {
{ case ‘0’: case ‘1’: case ‘2’: case ‘3’:
case ‘4’: case ‘5’: case ‘6’: case ‘7’:
case constante1: sentencia;
case ‘8’:
case constante2: sentencia; case ‘9’: cout << “\n Es un digito \n“;
case constante3: sentencia; break;
case ‘ ‘:
...
case ’\n’:
default : sentencia case ’\t’: cout << “\n Es un separador \n”);
break;
}
default: cout << “\n Otro \n”;
Para terminar un case se utiliza break; break;
}

FCC-BUAP 32
Estructuras de Repetición
for: #include <iostream.h>

Repite un conjunto de sentencias un int main()


número de veces determinado. {
int n;

cout << “Da el limite de la sumatoria: ” ;


for(inicio; fin; incremento) cin >> n ;

{ suma = 0;
sentencia1; for(i=1 ; i<= n ; i++)
sentencia2; {
suma=suma+i;
... }

sentencian; cout << “ La sumatoria es : “ << suma << endl;


return 0;
} }

FCC-BUAP 33
Estructuras de Repetición
while: #include <iostream.h>

Repite un conjunto de sentencias 0 o int main()


más veces. Si la condición se cumple. {
short x=1;
while (x <= 50)
while (condición) {
if (x &2==1) cout << “ “<< x;
{
x++;
sentencia1; }
return 0;
sentencia2;
}
...
sentencian;
}

FCC-BUAP 34
Estructuras de Repetición
do - while: #include <iostream.h>
#include <math.h>
Repite un conjunto de sentencias 1 o
más veces. Mientras la condición es int main()
verdadera.
{
double n,aprox,antaprox, epsilon;
cout << “ Da n, aproximacion, error \n”;
do { cin >> n >> aprox >>epsilon);
sentencia1;
do{
sentencia2; antaprox = aprox;
... aprox = (n / antaprox + antaprox) / 2;
}while( fabs (aprox – antaprox)>=epsilon);
sentencian;
cout << “ La raiz cuadrada es : << aprox ;
}while (condición);
return 0;
}

FCC-BUAP 35
Arreglos Unidimensionales
Un arreglo es una estructura #include <iostream.h>
homogénea, compuesta por varias
int main()
componentes, todas del mismo tipo y {
almacenadas consecutivamente en int n, a[100], b[100], c[100], i;
memoria. Cada componente puede ser
accedido directamente por el nombre cout << “Numero de elementos a sumar: “;
de la variable del arreglo seguido de un cin >> n;
subíndice encerrado entre corchetes [ ].
for (i=0; i<n; i++) cin >> a[i];
for (i=0; i<n; i++) cin >> b[i];
for (i=0; i<n; i++) c[i] = a[i] + b[i];
Posición
cout << “ La suma de los vectores es \n”
0 1 2 3 4 5
X 78 12 8 -20 14 100 for (i=0; i<n; i++)
cout << c[i]<< “ “;
Contenido del arreglo X en la posición 3

return 0;
}

FCC-BUAP 36
Arreglos Bidimensionales
A los arreglos bidimensionales int n,m,r,c, ma[10][10];
generalmente se les llaman tablas o
cout << “Da # renglones y columnas: ”;
matrices. Para acceder a los elementos
cin >> n >> m;
de una matriz se utilizan dos índices, cout << “Lectura de la matriz \n”;
uno para indicar el renglón y el segundo
para indicar la columna. for (r=0 ; r<n;r++)
for(c=0; c<m;c++)
cin >> ma[r][c];

cout << “ Escritura de la Matriz \n”;


int m[3][4];
0 1 2 3 Es el elemento m[1][2]=-8 for (r=0 ; r<n;r++)
{
0 45 3 -1 -1 for(c=0; c<m;c++)
cout <<mc[r][c] << “ “;
1 5 45 -8 4
2 -4 0 4 -7 cout << endl;
}

FCC-BUAP 37
Funciones
Las funciones son bloques con los La definición de una función consiste en un encabezado y
que se construyen programas C, y en un cuerpo. De manera explicita, se puede decir que es un
ellos se lleva a cabo toda actividad bloque o una proposición compuesta. La estructura básica
del programa. Una vez que una de la definición de una función es:
función ha sido escrita y depurada,
puede utilizarse una y otra vez.
tipo nombre([,argumentos])
{
main() func2()
{
func1() { [declaraciones]
{
func1();
.....
func2();
.....
..... proposiciones
func1() return;
}
}
return; } [return(expresión);]
}

FCC-BUAP 38
Funciones
Ejemplo: Llamado de la función:
Definición de una función #include <iostream.h>

int main(void)
int suma(int a, int b) {
int res, n1=23, n2=55;
{
res = suma (5,10);
int valor;
valor = a+b; cout <<“La suma es : ”<< res;

return valor; res = suma(n1,n2);


}
cout <<“La suma es: ” << res <<“\n”;
}

FCC-BUAP 39
Definición de una Clase
class nombre_de_la_Clase
{
datos privados
funciones privados
public:
datos públicos
métodos (funciones miembro) públicos
} lista_de_objetos;

lista_de_objetos puede no aparecer si lo único que se desea es declarar una


determinada Clase.

FCC-BUAP 40
Funciones MIEMBRO
• Los métodos de la clase también se denominan funciones miembro si son la única forma
de acceder los datos privados de la clase.

• (::) Operador de resolución de alcance quien le indica al compilador que la versión de la


función cuyo identificador precede al mencionado operador, es la de la Clase en sí:

tipo nombre_de_la_clase::nomb_funcion( [lista de parámetros] )


{
cuerpo del método
}

IMPORTANTE: El hecho de que el método o función sea miembro de la clase implica que puede acceder
de forma DIRECTA a los atributos de la clase.

FCC-BUAP 41
Constructores
• C++ permite a los Objetos inicializarse por sí mismos en el momento de su creación. Esta
inicialización automática se lleva a cabo a través del uso de las funciones Constructores.

• Un Constructor, es una función especial que es miembro de la clase y que lleva el mismo
nombre que ella.

• Un Constructor no debe regresar ningún tipo.

FCC-BUAP 42
Destructores
•La función que completa al Constructor de un objeto, es un Destructor.

•El Destructor es una función miembro de una Clase que se llama implícitamente al momento
de hacer desaparecer un objeto.

•El Destructor se denomina igual que la clase, solo que su nombre va precedido del signo de
negación lógica (~).

FCC-BUAP 43
Ejemplo: Constructor y Destructor
#include <iostream.h>

// Clase pila_car para modelar una Pila de caracteres


class pila_car
{
int size;
char *tope, *s;

public:
pila_car(int sz) {tope = s = new char[size = sz];}
~pila_car() {delete s;}
void push(char c) { *tope++ = c;}
char pop() { return *--tope;}
};

FCC-BUAP 44
Funciones en LINEA
• Una función en línea (inline), es una función que es expandida en línea cuando es llamada,
en lugar de realizar el proceso de construir un llamado a función.

• La razón para usar funciones en línea es la eficiencia.

• Existen dos formas de declarar una función en línea:


1. De forma explicita
2. De forma implícita

FCC-BUAP 45
Ejemplo: funciones inline
#include <iostream.h>
/* Código en línea para la función inicia de la class Vector
clase vector, forma EXPLICITA*/ {
int c[10];
int e;
inline void Vector::inicia (void)
{ public:
e=0; // De forma IMPLICITA
void inicia(void) {e=0;}
}
void pon_dato(int i);
void suma(Vector x, Vector y );
void Visualizar(void);
};

FCC-BUAP 46
Funciones AMIGAS
• Una clase puede ofrecer su amistad a una función externa, y con ello permitirle el acceso a
su parte privada.

• Entonces una clase puede declarar a una función como su amiga, haciendo uso de la
palabra clave friend, y anexando su prototipo.

• Es importante notar que una función externa, no puede declararse a si misma, amiga de
una clase; debe por lo tanto, esperar a que alguna o algunas clases lo hagan su amiga.

FCC-BUAP 47
POLIMORFISMO
(Sobrecarga de Constructores)
• En C++, dos o más funciones pueden tener el mismo nombre, variando solamente en los
parámetros de su declaración.

• También los constructores pueden ser sobrecargados, simplemente debemos declarar las
diferentes formas que deberá tomar, y definir su acción relativa a cada una de ellas.

FCC-BUAP 48

También podría gustarte