introduccion al entorno c++ builder 3.0

Post on 26-Oct-2014

69 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PROGRAMACIÓN MULTIMEDIA

INTRODUCCIÓN AL ENTORNO DE DESARROLLO C++ BUILDER 3.0

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

2

Programación Multimedia Introducción al C++ Builder 3.0

Biblioteca de clases visuales (VCL)

Componentes

Entorno de desarrollo integrado (IDE)

POO y C++ Builder

Excepciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

3

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

• Ventana principal:

• Menú principal• Barra de herramientas • Paleta de componentes

• Inspector de objetos

• Diseñador de formularios

• Editor de código

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

4

Programación Multimedia Introducción al C++ Builder 3.0

Menú principal:

• Ventana principal, siempre visible

• Menús comunes a cualquier aplicación Windows: File, Edit, Search, Help

• Título: nombre del proyecto, concepto esencial

Entorno de desarrollo integrado (IDE)

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

5

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

Barra de herramientas:

• Objetivo: acelerar las operaciones más comunes del menú principal

• Personalizable

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

6

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

Paleta de componentes:

• Componentes: bloques básicos sobre los que se construyen aplicaciones• Personalizable • Clasificados en distintas pestañas:

Standard InternetAdittional Data AccessWin32 Data ControlsSystem QreportActiveX

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

7

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

Diseñador de Formularios:

• Herramienta visual destinada a diseñar y presentar la interfaz de usuario de una aplicación• Opciones de la rejilla (Tools|Environment Options)• Componente activo (un click)• Código asociado (doble click)

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

8

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

Inspector de objetos:

• Ventana con dos pestañas: propiedades y eventos• Apariencia: propiedades; Funcionalidad: eventos

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

9

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

Editor de código:

• Accesible desde el diseñador de formularios• Coloreo de la sintaxis, multiarchivo• Acceso a la totalidad del código fuente de la aplicación. (Mejor no cambiar el mantenido automáticamente)

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

10

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

Sistema de ayuda:

• Ayuda estándar de windows• Ayuda contextual (F1) • Publicación completa de las propiedades, eventos y métodos de cada componente

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

11

Programación Multimedia Introducción al C++ Builder 3.0

Compilación, ejecución, depuración:

• Compile• Make• Build• Run • Step Over• Trace Into• Run to Cursor

Entorno de desarrollo integrado (IDE)

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

12

Programación Multimedia Introducción al C++ Builder 3.0

Entorno de desarrollo integrado (IDE)

El almacén de objetos:

• Formularios, cuadros de diálogos, módulos de datos, asistentes, DLLs, etc• Prediseñados• Punto de partida• Ampliable

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

13

Programación Multimedia Introducción al C++ Builder 3.0

Definición:

• Elementos genéricos con una funcionalidad muy concreta, cuya única finalidad es la reutilización. • Componente VCL: clase que caracteriza a un control de Windows agregando propiedades, métodos y gestores de eventos a cada control.

Componentes

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

14

Programación Multimedia Introducción al C++ Builder 3.0

Propiedades:

• Elementos del componente que configuran su aspecto y controlan su comportamiento. • Accesibles en tiempo de diseño, y en tiempo de ejecución.

Componentes

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

15

Programación Multimedia Introducción al C++ Builder 3.0

Componentes

Métodos:

• Funciones asociadas al componente que pueden invocarse para que el componente realice distintas acciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

16

Programación Multimedia Introducción al C++ Builder 3.0

Componentes

Eventos:

• Cualquier suceso que puede ocurrirle a un componente

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

17

Programación Multimedia Introducción al C++ Builder 3.0

VCL

VCL: Marco de trabajo visual y orientado a objetos

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

18

Programación Multimedia Introducción 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. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

19

Programación Multimedia Introducción al C++ Builder 3.0

• TObject: Ancestro de todas las clases de la VCL. Encapsula el comportamiento común 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 típicos de Windows• TApplication: Aplicaciones windows.• TForm: Formularios

VCL

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

20

Programación Multimedia Introducción al C++ Builder 3.0

• La P.O.O. es un paradigma de programación que se fundamenta en los conceptos de objeto y clase. • Objeto: Una entidad autónoma con una funcionalidad concreta y bien definida.• Clase: Especificación de las características de un conjunto de objetos.

Un objeto es una instancia de una clase.

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

21

Programación Multimedia Introducción al C++ Builder 3.0

1. Crear un proyecto (File | New | Application) 2. Cambiar el nombre del formulario (Name=PpalFrm). 3. Colocar un PaintBox de la página de componentes System que se

llame PaintBox, con Align=alTop. Dejar espacio por debajo del PaintBox para colocar un botón.

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 botón bit que permita terminar la ejecución del programa.

6. Guardar el código del formulario como Ppal.cpp y el proyecto como Ejemplo.bpr.

7. Crear una unidad (File | New | Unit). Guardarla con el nombre ObjGraf.cpp

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

22

Programación Multimedia Introducción al C++ Builder 3.0

//En ObjGraf.h:

//-------------------------------------------------- 

#ifndef ObjGrafH

#define ObjGrafH 

// Definición de la clase

TObjGraf class TObjGraf {}; 

#endif

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

23

Programación Multimedia Introducción al C++ Builder 3.0

POO y C++ Builder// INSTANCIACIÓN POR DECLARACIÓN

//En Ppal.h:

#include "ObjGraf.h" En Ppal.cpp:

//Pulsando dos veces en OnCreate de la pestaña Events del //editor de objetos de PpalFrm:

//-------------------------------------------------- 

void __fastcall TPpalFrm::FormCreate(TObject *Sender){

TObjGraf ObjGraf1();

TObjGraf ObjGraf2;

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

24

Programación Multimedia Introducción al C++ Builder 3.0

POO y C++ Builder// INSTANCIACIÓN POR DECLARACIÓN

//En Ppal.h:

#include "ObjGraf.h" En Ppal.cpp:

//Pulsando dos veces en OnCreate de la pestaña Events del //editor de objetos de PpalFrm:

//-------------------------------------------------- 

void __fastcall TPpalFrm::FormCreate(TObject *Sender){

TObjGraf ObjGraf1();

TObjGraf ObjGraf2;

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

25

Programación Multimedia Introducción al C++ Builder 3.0

POO y C++ Builder// INSTANCIACIÓN DINÁMICA

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. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

26

Programación Multimedia Introducción al C++ Builder 3.0

POO y C++ Builder// DESTRUCCIÓN DE OBJETOS

//En Ppal.cpp:

//Pulsando dos veces en OnDestroy de la pestaña Events //del editor de objetos de PpalFrm:

//-------------------------------------------------- 

void __fastcall TPpalFrm::FormDestroy(TObject *Sender){

delete ObjGraf;

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

27

Programación Multimedia Introducción al C++ Builder 3.0

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

28

Programación Multimedia Introducción al C++ Builder 3.0

//En ObjGraf.h:

class TObjGraf { 

public: int X; // Propiedades

int Y;

TColor Color;

TPaintBox *PaintBox; 

void Mostrar (void); // Métodos

};

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

29

Programación Multimedia Introducción al C++ Builder 3.0

//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();} 

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

30

Programación Multimedia Introducción al C++ Builder 3.0

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;} ;

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

31

Programación Multimedia Introducción al C++ Builder 3.0

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

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

32

Programación Multimedia Introducción al C++ Builder 3.0

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

33

Programación Multimedia Introducción al C++ Builder 3.0

// En ObjGraf.h:

//*************************************************

// Definición de la clase derivada Tcirculo

// Deriva de la clase base TObjGraf

//*************************************************

class TCirculo : public TObjGraf { 

public:  int Radio; // Propiedad exclusiva de Tcirculo

 };

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

34

Programación Multimedia Introducción al C++ Builder 3.0

// En ObjGraf.cpp:

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

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

35

Programación Multimedia Introducción al C++ Builder 3.0

Los constructores y destructores de una clase no son heredadas automáticamente 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 explícitamente. De ser así, es necesario saber: 1.que los constructores y destructores de las clases base son invocados automáticamente 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.

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

36

Programación Multimedia Introducción al C++ Builder 3.0

Clases Abstractas

Clase abstracta: es una clase que no está completamente especificada (posee métodos 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 terminología C++ se dice que una clase abstracta es aquella que posee al menos un método virtual puro.

·         Virtual: obliga a las clases derivadas a implementar ese método.

·         Puro: no pueden crearse instancias de esa clase.

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

37

Programación Multimedia Introducción al C++ Builder 3.0

//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); };

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

38

Programación Multimedia Introducción al C++ Builder 3.0

//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);} ...

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

39

Programación Multimedia Introducción al C++ Builder 3.0

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);};

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

40

Programación Multimedia Introducción al C++ Builder 3.0

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: Implementación de la clase.          protected: Implementación de la familia. Estos especificadores no modifican ni la forma de acceso ni el comportamiento, únicamente controlan desde dónde se pueden usar los miembros de la clase:        public: desde cualquier sitio.         private: desde los métodos de la clase.      protected: desde los métodos de la clase y desde los métodos de las clases derivadas.

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

41

Programación Multimedia Introducción al C++ Builder 3.0

// NUEVAS FORMAS DE ACCESO CON //PROPIEDADES VIRTUALES. 

property int X = {read=FX, write=SetX };property int Y = {read=FY, write=SetY }; property TColor Color ={read=FColor,write=FColor}; property int Ancho = {read=GetAncho};

property int Alto = {read=GetAlto }; 

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

42

Programación Multimedia Introducción al C++ Builder 3.0

//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;

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

43

Programación Multimedia Introducción al C++ Builder 3.0

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

//En realidad es como si se hiciera Cir1->SetX(100);

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

44

Programación Multimedia Introducción al C++ Builder 3.0

POLIMORFISMO

Sobrecarga de funciones.

Ocurre cuando en una clase existen dos métodos con idéntico nombre pero con distinta lista de parámetros. El compilador los considera como dos métodos distintos y aplicará cada uno de ellos en la situación apropiada.

POO y C++ Builder

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

45

Programación Multimedia Introducción al C++ Builder 3.0

Las excepciones son situaciones anómalas que requieren un tratamiento especial. ¡¡No tienen por qué ser errores!! Si se consigue dominar su programación, la calidad de las aplicaciones que se desarrollen aumentará considerablemente.

Excepciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

46

Programación Multimedia Introducción al C++ Builder 3.0

El funcionamiento general del mecanismo de lanzamiento y tratamiento de excepciones es el siguiente:       Existe un método que invoca la ejecución de otro.          Este método más interno se encuentra en una situación que puede considerarse como excepcional. Por lo tanto lanza una excepción.      En este momento termina la ejecución del método más interno y se retorna inmediatamente al método llamador.          El método llamador debe capturar la excepción y la trata. Parte del tratamiento de la excepción puede ser volver a lanzarla al método que invocó a este.

Excepciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

47

Programación Multimedia Introducción al C++ Builder 3.0

ESPECIFICACIÓN:

En ObjGraf.h:// Definicion de la clase EFueraRango//Clase de excepcion por entrar en "fuera de // rango":// salirse de los limites del PaintBoxclass EFueraRango {};

//Con lo que podríamos lanzar una excepción de la //siguiente manera: throw EfueraRango();

Excepciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

48

Programación Multimedia Introducción al C++ Builder 3.0

Excepciones

CAPTURA:

try {       <bloque de instrucciones críticas>} catch (<tipo excepción1> <variable1>) {       <manejador 1>} catch (<tipo excepción2> <variable2>) {       ...}

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

49

Programación Multimedia Introducción al C++ Builder 3.0

VCL:EAccessViolationError de acceso a memoria.EDatabaseErrorEspecifica un error de acceso a base de datos.EDBEditErrorDatos incompatibles con una máscara especificada.EDivByZeroEZeroDivideCaptura errores de división por cero (para división entera y real, respectivamente).EInOutErrorRepresenta un error de E/S de archivo.EInvalidPointerOperaciones no válidas con punteros.EPrinterErrorIndica un error de impresión.

Excepciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

50

Programación Multimedia Introducción al C++ Builder 3.0

o VCL:

Las clases de excepción de tipo VCL solamente pueden capturarse por puntero o por referencia (preferible).

Las excepciones de tipo VCL deben lanzarse con sintaxis "por valor".

Excepciones

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N.

51

Programación Multimedia Introducción al C++ Builder 3.0

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

Excepciones

PROGRAMACIÓN MULTIMEDIA

INTRODUCCIÓN AL ENTORNO DE DESARROLLO C++ BUILDER 3.0

top related