Você está na página 1de 52

PROGRAMACIN MULTIMEDIA

INTRODUCCIN AL ENTORNO DE DESARROLLO C++ BUILDER 3.0

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE) Componentes

Biblioteca de clases visuales (VCL)


POO y C++ Builder Excepciones
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Ventana principal: Men principal Barra de herramientas Paleta de componentes Inspector de objetos Diseador de formularios Editor de cdigo

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Men principal:
Ventana principal, siempre visible

Mens comunes a cualquier aplicacin Windows: File, Edit, Search, Help


Ttulo: nombre del proyecto, concepto esencial

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Barra de herramientas:
Objetivo: acelerar las operaciones ms comunes del men principal Personalizable

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Paleta de componentes:
Componentes: bloques bsicos sobre los que se construyen aplicaciones Personalizable Clasificados en distintas pestaas:
Standard Adittional Win32 System ActiveX Internet Data Access Data Controls Qreport

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Diseador de Formularios:
Herramienta visual destinada a disear y presentar la interfaz de usuario de una aplicacin Opciones de la rejilla (Tools|Environment Options) Componente activo (un click) Cdigo asociado (doble click)

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Inspector de objetos:
Ventana con dos pestaas: propiedades y eventos Apariencia: propiedades; Funcionalidad: eventos

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Editor de cdigo:
Accesible desde el diseador de formularios Coloreo de la sintaxis, multiarchivo Acceso a la totalidad del cdigo fuente de la aplicacin. (Mejor no cambiar el mantenido automticamente)

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Sistema de ayuda:
Ayuda estndar de windows Ayuda contextual (F1) Publicacin completa de las propiedades, eventos y mtodos de cada componente

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

10

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


Compilacin, ejecucin, depuracin:
Compile Make Build Run Step Over Trace Into Run to Cursor

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

11

Programacin Multimedia

Introduccin al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)


El almacn de objetos:
Formularios, cuadros de dilogos, mdulos

de datos, asistentes, DLLs, etc Prediseados Punto de partida Ampliable

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

12

Programacin Multimedia

Introduccin al C++ Builder 3.0

Componentes
Definicin:
Elementos genricos con una funcionalidad muy concreta, cuya nica finalidad es la reutilizacin. Componente VCL: clase que caracteriza a un control de Windows agregando propiedades, mtodos y gestores de eventos a cada control.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

13

Programacin Multimedia

Introduccin al C++ Builder 3.0

Componentes
Propiedades:
Elementos del componente que configuran su aspecto y controlan su comportamiento. Accesibles en tiempo de diseo, y en tiempo de ejecucin.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

14

Programacin Multimedia

Introduccin al C++ Builder 3.0

Componentes
Mtodos:
Funciones asociadas al componente que pueden invocarse para que el componente realice distintas acciones

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

15

Programacin Multimedia

Introduccin al C++ Builder 3.0

Componentes
Eventos:
Cualquier suceso que puede ocurrirle a un componente

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

16

Programacin Multimedia

Introduccin al C++ Builder 3.0

VCL

VCL: Marco de trabajo visual y orientado a objetos

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

17

Programacin Multimedia

Introduccin al C++ Builder 3.0

VCL

Parte superior: clases abstractas, porque sirven para estructurar y agrupar comportamientos comunes de las clases de la VCL.
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

18

Programacin Multimedia

Introduccin al C++ Builder 3.0

VCL
TObject: Ancestro de todas las clases de la VCL. Encapsula el comportamiento comn de todos los objetos TPersistent: objeto que se almacenan en disco o en memoria TComponent: Objetos de la paleta de componentes TControl: Componentes visuales TGraphicControl: Controles visuales, pero que no pueden recibir el foco (Canvas) TWinControl: Controles tpicos de Windows TApplication: Aplicaciones windows. TForm: Formularios

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

19

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


La P.O.O. es un paradigma de programacin que se fundamenta en los conceptos de objeto y clase. Objeto: Una entidad autnoma con una funcionalidad concreta y bien definida. Clase: Especificacin de las caractersticas de un conjunto de objetos. Un objeto es una instancia de una clase.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

20

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


1. Crear un proyecto (File | New | Application) 2. Cambiar el nombre del formulario (Name=PpalFrm). 3. Colocar un PaintBox de la pgina de componentes System que se llame PaintBox, con Align=alTop. Dejar espacio por debajo del PaintBox para colocar un botn. 4. Colocar un bevel de ancho 4 y alinearlo en lo alto (Align=alTop). La idea es que delimite la parte inferior del PaintBox. 5. Colocar un botn bit que permita terminar la ejecucin del programa. 6. Guardar el cdigo del formulario como Ppal.cpp y el proyecto como Ejemplo.bpr. 7. Crear una unidad (File | New | Unit). Guardarla con el nombre ObjGraf.cpp

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

21

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//En ObjGraf.h: //--------------------------------------------------

#ifndef ObjGrafH
#define ObjGrafH // Definicin de la clase TObjGraf class TObjGraf {}; #endif
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

22

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// INSTANCIACIN POR DECLARACIN
//En Ppal.h: #include "ObjGraf.h" En Ppal.cpp: //Pulsando dos veces en OnCreate de la pestaa Events del //editor de objetos de PpalFrm: //-------------------------------------------------void __fastcall TPpalFrm::FormCreate(TObject *Sender){ TObjGraf ObjGraf1(); TObjGraf ObjGraf2; }
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 23

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// INSTANCIACIN POR DECLARACIN
//En Ppal.h: #include "ObjGraf.h" En Ppal.cpp: //Pulsando dos veces en OnCreate de la pestaa Events del //editor de objetos de PpalFrm: //-------------------------------------------------void __fastcall TPpalFrm::FormCreate(TObject *Sender){ TObjGraf ObjGraf1(); TObjGraf ObjGraf2; }
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 24

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// INSTANCIACIN DINMICA
En Ppal.cpp: TObjGraf * ObjGraf; // Variable Global. // ObjGraf es un puntero a objetos de tipo TObjGraf void __fastcall TPpalFrm::FormCreate(TObject *Sender){ ObjGraf = new TObjGraf; }

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

25

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// DESTRUCCIN DE OBJETOS
//En Ppal.cpp: //Pulsando dos veces en OnDestroy de la pestaa Events //del editor de objetos de PpalFrm:

//-------------------------------------------------void __fastcall TPpalFrm::FormDestroy(TObject *Sender){ delete ObjGraf; }

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

26

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

27

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//En ObjGraf.h:
class TObjGraf { public: int X; // Propiedades

int
TColor

Y;
Color;

TPaintBox *PaintBox; void Mostrar (void); // Mtodos };


Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 28

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//ACCESO A MIEMBROS DE UN OBJETO
void __fastcall TPpalFrm::FormCreate(TObject *Sender){ ... int ValorY; ... ObjGraf->X = 5; ValorY = ObjGraf->Y; ObjGraf->Mostrar(); //Equivalente a (*Obj).Mostrar(); }
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

29

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


CONSTRUCTORES
En ObjGraf.h: class TObjGraf { ... // Constructor de objetos TObjGraf TObjGraf (TPaintBox *_PaintBox, TColor _Color=clBlack, int _X=0, int _Y=0); }; En ObjGraf.cpp: TObjGraf :: TObjGraf (TPaintBox * _PaintBox, TColor _Color, int _X, int _Y){ PaintBox = _PaintBox; Color = _Color; X = _X; Y = _Y; };
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 30

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//En Ppal.cpp: void __fastcall TPpalFrm::FormCreate(TObject *Sender) { ObjGraf = new TObjGraf (PaintBox, clRed, 10, 10); }

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

31

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

32

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// En ObjGraf.h: //************************************************* // Definicin de la clase derivada Tcirculo // Deriva de la clase base TObjGraf //************************************************* class TCirculo : public TObjGraf { public: }; int Radio; // Propiedad exclusiva de Tcirculo

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

33

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// En ObjGraf.cpp: TCirculo :: TCirculo (TPaintBox * _PaintBox, TColor _Color,int _X, int _Y, int _Radio) : TObjGraf (_PaintBox, _Color, _X, _Y) { Radio = _Radio; }

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

34

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


Los constructores y destructores de una clase no son heredadas automticamente por sus descendientes. Deberemos crear en las clases hijas sus propios constructores y destructores.

Es posible, no obstante, emplear los constructores de la clase base pero hay que indicarlo explcitamente. De ser as, es necesario saber: 1.que los constructores y destructores de las clases base son invocados automticamente antes que los constructores de las clases derivadas, y que los destructores de las clases derivadas se invocan antes que los de las clases base.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

35

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


Clases Abstractas Clase abstracta: es una clase que no est completamente especificada (posee mtodos sin implementar), por lo tanto no se pueden crear instancias de la misma. Una clase abstracta se usa para servir de clase base a otras clases. En terminologa C++ se dice que una clase abstracta es aquella que posee al menos un mtodo virtual puro.

Virtual: obliga a las clases derivadas a implementar ese mtodo.


Puro: no pueden crearse instancias de esa clase.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

36

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//En ObjGraf.h: class TObjGraf { public: ... // Otros metodos

virtual void Mostrar (void) = 0; // Metodo //virtual puro }; class TCirculo : public TObjGraf { public: ... // Instanciacion del metodo virtual puro de la //clase TObjGraf void Mostrar (void); };

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

37

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//En ObjGraf.cpp: void TCirculo :: Mostrar (void){ PaintBox->Canvas->Pen->Color = Color; PaintBox->Canvas->Brush->Color = Color; PaintBox->Canvas->Ellipse(X, Y, X+Radio*2, Y+Radio*2); } ...
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

38

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


TCirculo *Cir1, *Cir2; TCuadrado *Cuad1, *Cuad2; void __fastcall TPpalFrm::FormCreate(TObject *Sender) { Cir1 = new TCirculo (PaintBox, clBlack, 100, 100, 30); Cir2 = new TCirculo (PaintBox, clGreen, 210, 40, 20); Cuad1 = new TCuadrado (PaintBox, clRed, 200, 150, 45); Cuad2 = new TCuadrado (PaintBox, clYellow, 120,70,25); };

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

39

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


En C++ se puede especificar el acceso a los miembros de una clase utilizando los siguientes especificadores de acceso: public: Interfaz de la clase. private: Implementacin de la clase. protected: Implementacin de la familia. Estos especificadores no modifican ni la forma de acceso ni el comportamiento, nicamente controlan desde dnde se pueden usar los miembros de la clase: public: desde cualquier sitio. private: desde los mtodos de la clase. protected: desde los mtodos de la clase y desde los mtodos de las clases derivadas.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

40

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


// NUEVAS FORMAS DE ACCESO CON //PROPIEDADES VIRTUALES. property property property property int X = {read=FX, write=SetX }; int Y = {read=FY, write=SetY }; TColor Color ={read=FColor,write=FColor}; int Ancho = {read=GetAncho}; Alto = {read=GetAlto };

property int

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

41

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//Si en Ppal.cpp se usara esta propiedad para //lectura: int CX = Cir1->X; //En realidad es como si se hiciera int CX = Cir1->FX;

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

42

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


//Si se usara esta propiedad para escritura: Cir1->X = 100;

//En realidad es como si se hiciera


Cir1->SetX(100);

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

43

Programacin Multimedia

Introduccin al C++ Builder 3.0

POO y C++ Builder


POLIMORFISMO Sobrecarga de funciones. Ocurre cuando en una clase existen dos mtodos con idntico nombre pero con distinta lista de parmetros. El compilador los considera como dos mtodos distintos y aplicar cada uno de ellos en la situacin apropiada.
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 44

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
Las excepciones son situaciones anmalas que requieren un tratamiento especial. No tienen por qu ser errores!! Si se consigue dominar su programacin, la calidad de las aplicaciones que se desarrollen aumentar considerablemente.
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

45

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
El funcionamiento general del mecanismo de lanzamiento y tratamiento de excepciones es el siguiente: Existe un mtodo que invoca la ejecucin de otro. Este mtodo ms interno se encuentra en una situacin que puede considerarse como excepcional. Por lo tanto lanza una excepcin. En este momento termina la ejecucin del mtodo ms interno y se retorna inmediatamente al mtodo llamador. El mtodo llamador debe capturar la excepcin y la trata. Parte del tratamiento de la excepcin puede ser volver a lanzarla al mtodo que invoc a este.

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

46

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
ESPECIFICACIN: En ObjGraf.h: // Definicion de la clase EFueraRango //Clase de excepcion por entrar en "fuera de // rango": // salirse de los limites del PaintBox class EFueraRango {}; //Con lo que podramos lanzar una excepcin de la //siguiente manera: throw EfueraRango();

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

47

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
CAPTURA: try { <bloque de instrucciones crticas>

} catch (<tipo excepcin1> <variable1>) { <manejador 1> } catch (<tipo excepcin2> <variable2>) { ... }

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

48

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
VCL:

EAccessViolation EDatabaseError

Error de acceso a memoria. Especifica un error de acceso a base de datos.

EDBEditError Datos incompatibles con una mscara especificada. EDivByZero EZeroDivide EInOutError Representa un error de E/S de archivo. EInvalidPointer
Operaciones no vlidas con punteros.

Captura errores de divisin por cero (para divisin entera y real, respectivamente).

EPrinterError

Indica un error de impresin.


Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 49

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
o VCL: Las clases de excepcin de tipo VCL solamente pueden capturarse por puntero o por referencia (preferible).

Las excepciones de tipo VCL deben lanzarse con sintaxis "por valor".
Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N. 50

Programacin Multimedia

Introduccin al C++ Builder 3.0

Excepciones
#include <vcl.h> #pragma hdrstop WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { throw Exception("Mi excepcin VCL"); } catch (const Exception & E) { ShowMessage("Clase de la excepcin capturada: " + AnsiString(E.ClassName()) + "\nMensaje: " + E.Message); } return (0);}

Carlos A. Lzaro Carrascosa. Laboratorio de Comunicacin Oral R.W.N.

51

PROGRAMACIN MULTIMEDIA
INTRODUCCIN AL ENTORNO DE DESARROLLO C++ BUILDER 3.0

Você também pode gostar