Introducción a la POO -...
Transcript of Introducción a la POO -...
La Tecnología Orientada a Objetos
•Se ha dicho que la Tecnología Orientada a Objetos es una metodología, un paradigma, unatecnología de empaquetamiento, un método de análisis y diseño, y hasta un nuevo lenguajepara 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 aObjetos
•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 aObjetos, están reestructurando sus productos ya existentes, usando Lenguajes Orientados aObjetos.
•Obteniendo como resultado flexibilidad, modularidad y reusabilidad, en un esfuerzo porenfrentar la dinámica de cambio y la competencia comercial en tiempos de mercadosglobalizados.
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 enpartes componentes, en sub-partes componentes y así sucesivamente.
•Ingeniería de Software Asistida por Computadora (CASE): Automatización de la programación apartir de diagramas.
•Lenguajes de Cuarta Generación (4GL’s): conjunto de herramientas para la creación deaplicaciones, incluyendo formas, reportes, etc.
FCC-BUAP 5
Opciones disponibles
•Los esfuerzos para mejorar el desarrollo del software, se han enfocado hasta ahora en lamodularización de los procedimientos, separando el otro ingrediente de la ecuación de NiklausWirth
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 ensimulaciones por computadora.
•Un objeto se define, entonces, como una unidad de software que contiene una colección dedatos 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 definenel 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 loreemplaza con ventaja.
•Una Clase es un prototipo que define los métodos y datos que serán incluidos en un tipo deobjeto 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
◦ C++
◦ C#
◦ Objective-C
◦ Phyton
◦ Perl
◦ PHP
◦ JavaScript
FCC-BUAP 9
◦ Visual Basic
◦ Visual Fox Pro
◦ Object Pascal
◦ Ada
◦ Lisp
◦ Etc.
Objeto Computacional
Def. Representación en memoria de una abstracción del mundo real, un enteencapsulado que contiene Datos y Métodos, y que es capaz de recibir mensajesdel 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 delnombre del Método que el receptor sabe como ejecutar (usar parámetros en caso de sernecesario).
FCC-BUAP 11
Conceptos Relacionados•El ESTADO de un objeto acompaña todas las propiedades (generalmente estáticas) además desus 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 ypaso 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 tipode objetos y así proveer límites conceptuales bien definidos, relativos a la perspectiva delobservador.
FCC-BUAP 13
Tipo
•El tipo es el reforzamiento de la clase de un objeto, semejante a los objetos de diferentes tiposque no deberían ser intercambiados, o a lo más, deberían ser intercambiados de modo muyrestringido.
FCC-BUAP 14
Encapsulamiento•Mecanismo por medio del cual, un objeto esconde sus datos y métodos al mundo exterior. Elencapsulamiento permite proteger los datos de transformaciones no deseadas, y sólo bajoautorización del propio objeto.
•Encapsulación es el proceso de departamentalizar los elementos de una abstracción queconstituye su estructura y conducta; sirve para separar la interfaz de una abstracción de suimplementación.
FCC-BUAP 15
Modularidad•Es la propiedad de un sistema que ha sido descompuesto en un conjunto de módulos altamentecohesivos 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 deun clase más general, es decir, incluye automáticamente toda la definición de datos y métodosde 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 laclasificació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
Persistencia•La persistencia es una propiedad de un objeto a través de la cual, su existencia trasciende altiempo 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++
int x,y; // variables enteras
float s; // variable real
char a[10]; // a = arreglo de 10 caracteres
bool Lógicos
char Caracter*1
short Entero*2
int , int long Entero*4
float Real*4
double Real*8
FCC-BUAP 26
Operadores#include <iostream.h>
int main()
{
int i = 1;
cout << i << “, “ ;
cout << (++i ) << “, “ ;
cout << i << “, “ ;
cout << (i++) << “, “ ;
cout << i << endl;
return 0;
}
Salida : 1, 2, 2, 2, 3
Operación Descripción
x + y suma
x – y resta
x* y multiplicación
x/y división
x % y modulo
+x positivo
-y negativo
x++ Pos incremento
++x Pre incremento
x-- Pos decremento
--x Pre decremento
FCC-BUAP 27
....más operadores
Donde && y || se evalúan de izquierda a derecha
Operación Op. De Relación
x < y Menor que
x <= y Menor o igual que
x > y Mayor que
x >= y Mayor o igual que
x == y Igual
x != y Diferente
Operación Op. Lógicos
0 Valor falso
No-cero Valor verdadero
!x Negación
x && y and
x ¦¦ y or
FCC-BUAP 28
Operadores para manejo de bits
char x; // Binario
// Operación
x=7; 0 0 0 0 0 1 1 1 //(Asignación)
x << 1; 0 0 0 0 1 1 1 0 //14(x*2)
x << 3; 0 1 1 1 0 0 0 0 //112(x*8)
x << 2; 1 1 0 0 0 0 0 0 //192(x*4-2^8)
x >> 1; 0 1 1 0 0 0 0 0 //96(x/2)
x >> 2; 0 0 0 1 1 0 0 0 //24(x/4)
Operación Descripción
-i Complemento
i & j And
i ˆ j Or exclusivo
i ¦ j Or inclusivo
i << j Corrimiento a la izquierda
i >> j Corrimiento a la derecha
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ónif [else]:
El if se utiliza para verificar si unaexpresión es verdadera (se ejecuta lassentencias1) o si la expresión es falsa (seejecutan las sentencias2).
if (expresión)
{
sentencias1;
}
else
{
sentencia2;
}
#include <iostream.h>
int main()
{
int a;
cout << “Da un numero: “ ;
cin >>a ;
if (a>=0 && (a%2==0))
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))
cout <<a<<“ Es Negativo Par \n”;
else
cout <<a<<“ Es Negativo impar \n”;
return 0;
}
FCC-BUAP 31
Estructuras de Decisiónswitch:
Se utiliza para verificar una de variasopciones.
switch (expression)
{
case constante1: sentencia;
case constante2: sentencia;
case constante3: sentencia;
...
default : sentencia
}
Para terminar un case se utiliza break;
char ch;
cin >> ch;
switch (ch)
{
case ‘0’: case ‘1’: case ‘2’: case ‘3’:
case ‘4’: case ‘5’: case ‘6’: case ‘7’:
case ‘8’:
case ‘9’: cout << “\n Es un digito \n“;
break;
case ‘ ‘:
case ’\n’:
case ’\t’: cout << “\n Es un separador \n”);
break;
default: cout << “\n Otro \n”;
break;
}
FCC-BUAP 32
Estructuras de Repeticiónfor:
Repite un conjunto de sentencias unnúmero de veces determinado.
for(inicio; fin; incremento)
{
sentencia1;
sentencia2;
...
sentencian;
}
#include <iostream.h>
int main()
{
int n;
cout << “Da el limite de la sumatoria: ” ;
cin >> n ;
suma = 0;
for(i=1 ; i<= n ; i++)
{
suma=suma+i;
}
cout << “ La sumatoria es : “ << suma << endl;
return 0;
}
FCC-BUAP 33
Estructuras de Repeticiónwhile:
Repite un conjunto de sentencias 0 omás veces. Si la condición se cumple.
while (condición)
{
sentencia1;
sentencia2;
...
sentencian;
}
#include <iostream.h>
int main()
{
short x=1;
while (x <= 50)
{
if (x &2==1) cout << “ “<< x;
x++;
}
return 0;
}
FCC-BUAP 34
Estructuras de Repeticióndo - while:
Repite un conjunto de sentencias 1 omás veces. Mientras la condición esverdadera.
do {
sentencia1;
sentencia2;
...
sentencian;
}while (condición);
#include <iostream.h>
#include <math.h>
int main()
{
double n,aprox,antaprox, epsilon;
cout << “ Da n, aproximacion, error \n”;
cin >> n >> aprox >>epsilon);
do{
antaprox = aprox;
aprox = (n / antaprox + antaprox) / 2;
}while( fabs (aprox – antaprox)>=epsilon);
cout << “ La raiz cuadrada es : << aprox ;
return 0;
}
FCC-BUAP 35
Arreglos UnidimensionalesUn arreglo es una estructurahomogénea, compuesta por variascomponentes, todas del mismo tipo yalmacenadas consecutivamente enmemoria. Cada componente puede seraccedido directamente por el nombrede la variable del arreglo seguido de unsubíndice encerrado entre corchetes [ ].
#include <iostream.h>
int main()
{
int n, a[100], b[100], c[100], i;
cout << “Numero de elementos a sumar: “;
cin >> n;
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];
cout << “ La suma de los vectores es \n”
for (i=0; i<n; i++)
cout << c[i]<< “ “;
return 0;
}
78 12 8 -20 14 100
0 1 2 3 4 5
X
Posición
Contenido del arreglo X en la posición 3
FCC-BUAP 36
Arreglos BidimensionalesA los arreglos bidimensionalesgeneralmente se les llaman tablas omatrices. Para acceder a los elementosde una matriz se utilizan dos índices,uno para indicar el renglón y el segundopara indicar la columna.
int n,m,r,c, ma[10][10];
cout << “Da # renglones y columnas: ”;
cin >> n >> m;
cout << “Lectura de la matriz \n”;
for (r=0 ; r<n;r++)
for(c=0; c<m;c++)
cin >> ma[r][c];
cout << “ Escritura de la Matriz \n”;
for (r=0 ; r<n;r++)
{
for(c=0; c<m;c++)
cout <<mc[r][c] << “ “;
cout << endl;
}
int m[3][4];
3 45 -1 -1
5 45 -8 4
-4 0 4 -7
1 2 3 0
0
1
2
Es el elemento m[1][2]=-8
FCC-BUAP 37
FuncionesLas funciones son bloques con losque se construyen programas C, y enellos se lleva a cabo toda actividaddel programa. Una vez que unafunción ha sido escrita y depurada,puede utilizarse una y otra vez.
La definición de una función consiste en un encabezado yun cuerpo. De manera explicita, se puede decir que es unbloque o una proposición compuesta. La estructura básicade la definición de una función es:
tipo nombre([,argumentos])
{
[declaraciones]
proposiciones
[return(expresión);]
}
main(){
func1();.....
func1()}
func1(){
func2();.....
return;}
func2(){
.....return;
}
FCC-BUAP 38
FuncionesEjemplo:
Definición de una función
int suma(int a, int b)
{
int valor;
valor = a+b;
return valor;
}
Llamado de la función:
#include <iostream.h>
int main(void)
{
int res, n1=23, n2=55;
res = suma (5,10);
cout <<“La suma es : ”<< res;
res = suma(n1,n2);
cout <<“La suma es: ” << res <<“\n”;
}
FCC-BUAP 39
Definición de una Claseclass 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 unadeterminada 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 lafunció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 accederde 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. Estainicializació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 mismonombre 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 momentode hacer desaparecer un objeto.
•El Destructor se denomina igual que la clase, solo que su nombre va precedido del signo denegació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
/* Código en línea para la función inicia de la clase vector, forma EXPLICITA*/
inline void Vector::inicia (void)
{
e=0;
}
#include <iostream.h>
class Vector
{
int c[10];
int e;
public:
// 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 asu parte privada.
• Entonces una clase puede declarar a una función como su amiga, haciendo uso de lapalabra clave friend, y anexando su prototipo.
• Es importante notar que una función externa, no puede declararse a si misma, amiga deuna 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 losparámetros de su declaración.
• También los constructores pueden ser sobrecargados, simplemente debemos declarar lasdiferentes formas que deberá tomar, y definir su acción relativa a cada una de ellas.
FCC-BUAP 48