Documentos de Académico
Documentos de Profesional
Documentos de Cultura
•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
FCC-BUAP 3
Situación actual
•La tecnología orientada a objetos es ya una realidad, sinónimo de calidad y robustez.
•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.
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
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
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).
FCC-BUAP 9
Objeto Computacional
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.
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
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.
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:
•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():
FCC-BUAP 24
Un primer programa
#include <iostream.h> // librería de encabezado
c = a + b; // suma
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
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 }
FCC-BUAP 27
....más operadores
Operación Op. De Relación Operación Op. Lógicos
x == y Igual x ¦¦ y or
x != y Diferente
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:
FCC-BUAP 30
Estructuras de Decisión
if [else]: #include <iostream.h>
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>
{ suma = 0;
sentencia1; for(i=1 ; i<= n ; i++)
sentencia2; {
suma=suma+i;
... }
FCC-BUAP 33
Estructuras de Repetición
while: #include <iostream.h>
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];
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;
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;
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.
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.
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>
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.
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