Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO...

48
Introducción a la POO JUAN CARLOS CONDE RAMÍREZ OBJECT-ORIENTED PROGRAMMING

Transcript of Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO...

Page 1: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

Introducción a la POOJUAN CARLOS CONDE RAMÍREZ

OBJECT-ORIENTED PROGRAMMING

Page 2: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 3: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 4: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 5: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

¿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

Page 6: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 7: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 8: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 9: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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.

Page 10: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 11: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 12: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 13: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 14: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 15: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 16: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 17: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 18: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 19: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 20: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 21: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

Concurrencia

•La Concurrencia permite a distintos objetos actuar al mismo tiempo.

FCC-BUAP 21

Page 22: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 23: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 24: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 25: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 26: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 27: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 28: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

....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

Page 29: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 30: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 31: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 32: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 33: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 34: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 35: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 36: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 37: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 38: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 39: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 40: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 41: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 42: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 43: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 44: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 45: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 46: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 47: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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

Page 48: Introducción a la POOclimate.cs.buap.mx/CondeJC/Cursos/Material/POOi_/Notas/02...•Aplicar la POO en el desarrollo de aplicaciones. FCC-BUAP 3 Situación actual •La tecnología

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