A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações Grupo: Gabriel Feldman José Augusto Araújo Wladmir Chapetta Junho de 2003 UFRJ.

Apresentações semelhantes


Apresentação em tema: "Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações Grupo: Gabriel Feldman José Augusto Araújo Wladmir Chapetta Junho de 2003 UFRJ."— Transcrição da apresentação:

1 Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações Grupo: Gabriel Feldman José Augusto Araújo Wladmir Chapetta Junho de 2003 UFRJ - INFO - PSI

2 Revisão da Plataforma wxWindows Junho de 2003 2 PARTE 1. Fabricante PARTE 2. Produtos, ferramentas e componentes PARTE 3. Arquitetura de Desenho PARTE 4. Exemplos de aplicações Links Sumário

3 Revisão da Plataforma wxWindows Junho de 2003 3 P1 - Informações Gerais Criado por Julian Smart (líder do projeto) a partir de 1992 no Artificial Intelligence Applications Institute, University of Edinburgh e liberado pela instituição posteriormente para livre desenvolvimento e distribuição pelo autor. Julian Smart declara no site de sua empresa de consultoria Anthemion Software (localizada em Rutland, U.K.), que esta é a fabricante e proprietária do framework. Na prática, isto faz pouca ou nenhuma diferença para os usuários do framework, já que o produto é free e open source. O grupo responsável pelo projeto (núcleo e acessórios open source) trabalha em uma relação de cooperação semelhante a que existe no desenvolvimento da maioria das outras aplicações de código aberto.

4 Revisão da Plataforma wxWindows Junho de 2003 4 P1 - Desenvolvedores O grupo que desenvolve o núcleo do framework (i.e., as versões para cada plataforma) é formado por 19 pessoas. Os principais membros do grupo são Julian Smart (o criador): PhD - Artificial Intelligence, University of Dundee, Scotland, 1992. (wxMSW) Stefan Csomor: Software developer at Advanced Concepts, AG (wxMac) Vadim Zeitlin: PhD, Physics, University of ?, France (wxUniversal e contribuições diversas) Robert Roebling: B.S., Computer Science, University of Freiburg, Germany (wxGTK) Robin Paul Dunn: B.S., Computer Science, Brigham Young University, June 1990 (wxPython) Ao longo da história do projeto, várias dezenas de pessoas contribuíram para aumentar a portabilidade do framework, torná-lo eficiente nas várias plataformas das versões existentes e criar bibliotecas, componentes e ferramentas auxiliares para uso com o framework.

5 Revisão da Plataforma wxWindows Junho de 2003 5 P1 - Remuneração do grupo Qual o retorno financeiro que o wxWindows oferece aos desenvolvedores do wxWindows? Os desenvolvedores do wxWindows obtém retorno financeiro através de: Venda do wxWindows em cdrom, com material adicional (bibliotecas, manuais, etc.); Venda de softwares desenvolvidos para uso com o wxWindows (e.g., DialogBlocks); Venda de serviços de consultoria e suporte para uso do wxWindows; Divulgação do nome dos desenvolvedores e de suas empresas, para venda de outros serviços e produtos (independentes do wxWindows).

6 Revisão da Plataforma wxWindows Junho de 2003 6 P1 - Suporte Técnico Os principais desenvolvedores do wxWindows possuem consultorias independentes que prestam (vendem) serviços de suporte aos usuários do framework. Uma alternativa ao suporte pago é a lista de discussão oficial do projeto, utilizada pela maioria da comunidade de usuários e pelos próprios desenvolvedores do projeto para identificarem erros no framework e corrigí-los.

7 Revisão da Plataforma wxWindows Junho de 2003 7 P2 - Descrição geral do framework O wxWindows é um produto free (gratuito para download) e open (código aberto), ou seja, pode ser redistribuído sob as condições de sua licença, que é baseada na L-GPL (GPL para bibliotecas), com licença adicional que permite o seu uso para desenvolvimento de aplicações proprietárias ou GPL. Portanto, aplicações comerciais desenvolvidas utilizando o framework podem ser vendidas com ou sem abertura de código fonte. O wxWindows foi criado com o objetivo de permitir o desenvolvimento de aplicações GUI de um modo flexível e barato. Outras bibliotecas de classes comerciais multi- plataforma (C++) não apresentam todas as seguintes qualidades: 1. baixo preço ( de graça) 2. disponibilidade de código-fonte 3. simplicidade de programação 4. suporte a uma grande faixa de compiladores C++

8 Revisão da Plataforma wxWindows Junho de 2003 8 P2 - Diagrama do Framework Cada elemento da interface GUI (janela, botão,...) do framework do wxWindow é um wrapper em torno do elemento GUI do próprio sistema.

9 Revisão da Plataforma wxWindows Junho de 2003 9 P2 - Diagrama do wxUniversal Uma biblioteca para o criação de janelas independente do sistema operacional Com a criação das janelas independente do sistema operacional, o wxUniversal permite utilizar qualquer look and feel em qualquer plataforma.

10 Revisão da Plataforma wxWindows Junho de 2003 10 P2 - Linguagens de mais alto nível O wxWindows está sendo importado para ser usado com algumas linguagens de alto nível.

11 Revisão da Plataforma wxWindows Junho de 2003 11 P2 - Qualidades do framework A importância do uso de uma biblioteca de classes independente de plataforma, não pode ser subestimada, uma vez que o desenvolvimento GUI consome muito tempo. Além do risco de tornar seu código não reutilizável ou obsoleto se estiver direcionado a uma plataforma de pouco uso ou que se torne obsoleta. Caracteríticas da plataforma: Disponível para as plataformas mais populares. (Windows, Unix, Solaris...) Trabalha com a maioria dos compiladores populares C++ e Python. + de 50 programas de exemplo. + de 1000 páginas de documentação (inclusive on-line). Inclui o aplicativo Tex2RTF, que permite a produção de documentações Windows Help, HTML e RTF. API orientada a objeto de fácil uso. Sistema de eventos flexível. Chamadas gráficas (linhas, retângulos, splines, polylines, etc.) Construção de layouts baseada em restrição e tamanho. Lista avançada de classes de controle (Toolbar, notebook, tree control). Suporte MDI (Multiple Document Interface). Pode ser usado para criar bibliotecas dinâmicas no Windows e Unix. No MS Windows, suporta criação de metafiles (ex : Copy / Paste). Suporte de rede via família de classes de sockets e protocolos. Suporte para processamento de imagem independente de plataforma. Manipula muitos formatos de arquivo (BMP, PNG, JPEG, GIF, XPM, PNM, PCX).

12 Revisão da Plataforma wxWindows Junho de 2003 12 P2 - Compiladores compatíveis (exemplos) Compiladores MS-Windows: Visual C++ 1.5, 4.0., 5.0 e 6.0 ( versão.NET sendo avaliada) Borland C++ 4.5 e 5.0 Borland C++ Builder 1.0 e 3.0 Watcom C++ 10.6 (Win32) Cygwin b20 Mingw32 Metrowerks CodeWarrior 4 Unix: Grande parte dos compiladores C++, incluindo GNU C++ (EGCS 1.1.1 ou acima).

13 Revisão da Plataforma wxWindows Junho de 2003 13 P2 - Produtos acessórios As bibliotecas e ferramentas distribuídas junto com o wxWindows: Helpview Helpview é um programa para exibir arquivos HTML do wxWindows. Pode usar classes wxWindows HTML Help de dentro da aplicação. Tex2RTF Distribuído com wxWindows para converter manuais LaTeX em HTML, MS HTML Help, wxHTML Help, RTF, and Windows Help RTF. Helpgen Helpgen pega C++ arquivos header e gera arquivos de documentação para Tex2RTF, usando comentários apropriados (JavaDoc). Dialog Editor Permite criação de caixas de diálogos, produzindo arquivos WXR. Object Graphics Library OGL define API para aplicações que precisam mostram objetos conectados por linhas que pode ser movidos e interagem. Frame Layout library Sofisticadas facilidades de drag and drop.

14 Revisão da Plataforma wxWindows Junho de 2003 14 P2 - Produtos acessórios (2) As bibliotecas e ferramentas distribuídas junto com o wxWindows: Net library É uma coleção de classes de rede, para mail e web. Animate library Permite carregar GIFs animadas, entre outros formatos,e exibí-los. Canvas library MMedia library Dá suporte a funcionalidades de multimídia. Styled Text Control library Biblioteca para edição de texto sensível à sintaxe. Plot Biblioteca de impressão

15 Revisão da Plataforma wxWindows Junho de 2003 15 P2 - Produtos relacionados IDEs e Editores de Caixas de Diálogo: wxDesigner * Ferramenta comercial para criação de caixas de diálogos para wxWindows de modo rápido e fácil.Permitir editar caracteríticas de componentes em alto nível tais como suporte a copy/cut/paste, undo/redo infinitos. Testes rápidos e seguro. DialogBlocks DialogBlocks editor de caixas de diálogo comercial para wxWindows que suporta C++ and XRC. Dev-C++ * IDE Windows para trabalhar MinGW, trabalha bem com wxWindows. MinGW Developer Studio MinGW Developer Studio é uma IDE C/C++ simples para MinGW, escrito usando wxWindows e MinGW. Usa GNU C/C++ e GNU gdb.

16 Revisão da Plataforma wxWindows Junho de 2003 16 P2 - Produtos relacionados (2) IDEs e Editores de Caixas de Diálogo: wxWorkshop IDE para wxWindows escrito com wxWindows. wxHatch Gerador de código for wxWindows. VisualWx * Ferramenta de desenho de forms para wxWindows. SlickEdit IDE para Linux. CodeForge IDE para Linux. Anjuta IDE para Linux.

17 Revisão da Plataforma wxWindows Junho de 2003 17 P3 - Categorias de classes Managed windows: wxFrame, wxDialog, wxMDIChildFrame... Miscellaneous windows: wxPanel, wxScrolledWindows, wxGrid... Common dialogs: wxDialog, wxFileDialog, wxFontDialog, wxPrintDialog... Controls: wxControl, wxButton, wxCheckBox, wxComboBox... Menus: wxMenu, wxMenuBar e wxMenuItem. Window layout: wxSizer, wxGridSizer, wxBoxSizer... Device contexts: wxDC, wxClientDC, wxScreenDC... Graphics device interface: wxColour, wxBitmap, wxBrush, wxIcon... Events: wxActivateEvent, wxCalendarEvent... Data structures: wxList, wxDate, wxString... Run-time class information system: wxClassInfo, RTTI macros... Networking classes: wxSocketBase, wxSocketClient, wxFTP, wxHTTP... Document/view framework: wxDocument, wxView, wxDocTemplate...

18 Revisão da Plataforma wxWindows Junho de 2003 18 P3 - Categorias de classes (2) Printing framework: wxPrinter, wxPreviewFrame, wxPageSetupDialog... File related classes: wxDir, wxFileName, wxFile, wxFFile... Threading classes: wxThread, wxMutex, wxSemaphore... HTML classes: wxHtmlWindow, wxHtmlParser... Online help: wxToolTip, wxHelpControler, wxHelpProvider... XML-based resource system classes: wxXmlResource, wxXmlResourceHandler Database classes: WxDb, wxDbTable, wxDbInf, wxRecordSet, wxQueryCol... Miscellaneous: wxApp, wxCaret, wxConfig...

19 Revisão da Plataforma wxWindows Junho de 2003 19 P3 - Diagrama UML de classes: uma pequena amostra...

20 Revisão da Plataforma wxWindows Junho de 2003 20 P3 - Algumas das principais classes ( em ordem de especialização ) wxObject: todas as classes do wxWindows derivam desta classe. Provê algumas abstrações para serem implementadas por classes mais especializadas (Dump, GetClassInfo...). wxEvtHandler: tem a finalidade de receber informações do sistema de janelas. Todas as classes relativas a janelas e controles (wxWindow, wxDialog, wxButton...) são derivadas desta classe. wxWindow: classe genérica para todos os elementos de janela. Quando um wxWindow é destruído todos os elementos ligados nele são destruídos antes. wxDialog: uma janela de dialogo. wxFileDialog: uma janela de dialogo especializada em abrir arquivos.

21 Revisão da Plataforma wxWindows Junho de 2003 21 P3 - Classes, macros e recursos auxiliares wxString:Mais seguro e conveniente que o uso de char*. Além de possuir métodos que substituem funções como strcpy, strcmp, etc. wxWindows resource files: Usar.xrc (wxWindows resource files) para mainpular objetos de interface sem impacto no código fonte. wxDebugContext: Usar para checar memória corrompida e desperdiçada. Possui operações de rastreamento da memória. Pode gerar estatísticas de comportamento da memória de sua aplicação.

22 Revisão da Plataforma wxWindows Junho de 2003 22 P3 - Classes, macros e recursos auxiliares (2) wxASSERT: pode-se usar sentenças assertivas para assegurar a preservação de invariantes de classe e para implementar avaliações de pré-condições e de pós- condições de um desenho por contrato. Caso alguma condição seja contrariada, a macro exibe mensagem apropriada.. ex: void MyClass::MyFunction(wxObject* object) { wxASSERT_MSG( (object != NULL), "object should not be NULL in MyFunction!" ); Permite que continue execução ou aborta o programa. Wxlog: classe para geração de log de execução. wxLogDebug e wxLogTrace: macros de depuração e funções de log, para gerar informação de depuração em arquivo.

23 Revisão da Plataforma wxWindows Junho de 2003 23 P3 - Substituição do uso de Polimorfismo por Tabela de eventos Solução já adotada no MFC da Microsoft, com o nome de Message Map. Tabelas de eventos ligam uma mensagem à um método de uma classe que manipula este evento. Ou seja, as funções são chamadas estaticamente e não através dos ponteiros de tabelas de funções virtuais (polimorfismo). Pelo polimorfismo, haveria dentro do código de cada aplicação, ponteiros para funções virtuais que não serviriam para nada, pois a maioria dos eventos disparados por controles não precisam ser tratados pela aplicação... O número de ponteiros inúteis na aplicação seria proporcional ao número de controles GUI da aplicação... Detalhes de implementação do polimorfismo dependem do compilador. Porém, a diferença de performance, em relação a solução por tabela de eventos, é inevitável !

24 Revisão da Plataforma wxWindows Junho de 2003 24 P3 - Casos de herança múltipla As classes wxFileStream e wxFFileStream são exemplos de classes geradas através de herança múltipla: wxInputStreamwxOutputStream wxFileInputStreamwxFileOutputStream wxFileStream

25 Revisão da Plataforma wxWindows Junho de 2003 25 P3 - Particularidades C++ no wxWindows Templates: wxWindows não faz uso de templates, uma vez que é considerado um mecanismo não portável. RTTI: wxWindows não faz uso de informação de tipo em tempo de execução já que wxWindows prove seu próprio sistema de informação de tipo em tempo de execução, implementado com macros.( Gerar log's e depuração). Tipo NULL: alguns compiladores definem NULL para ser 0L, já que nenhuma conversão é permitida para ponteiros. Por causa disso, todos as ocorrências de NULL usam uma conversão explícita tal como: wxWindow *my_window = (wxWindow*) NULL; É recomendado inserir isso em todo código wxWindow para tornar o código um pouco mais portável. Headers Pré-compilados: alguns compiladores, tais como Borland C++ e Microsoft C++, suportam headers pré-compilado. Poupa tempo de compilação. O próprio wxWindows pode ser pré compilado. Desvantagem é que a alteração em um arquivo header obriga a recompilação de outros arquivos( no caso do wxWindows, ele todo deve ser recompilado uma vez que tudo inclui o "wx.h ").

26 Revisão da Plataforma wxWindows Junho de 2003 26 P4 - Exemplo de aplicação simples Exemplo: A aplicação Oi e Tchau. Aplicação exibe uma mensagem em um statusbar com a mensagem "Oi e Tchau!!" Cada aplicação wxWindow precisa de um objeto derivado de wxApp e sobrecarrega o método OnInit() para iniciar a aplicação. Pode-se, por exemplo, criar a janela principal da sua aplicação neste método.O arquivo de definição "OiTChau.h" poderia ser o seguinte: #ifndef _OI_TCHAU_H #define _OI_TCHAU_H class OiTchau : public wxApp { public: virtual bool OnInit(); }; DECLARE_APP(OiTchau) #endif _OI_TCHAU_H Para janela principal usaremos a classe wxFrame. Esta classe prove uma janela que seu tamanho e posição pode ser alterado pelo usuário.

27 Revisão da Plataforma wxWindows Junho de 2003 27 P4 - Exemplo de aplicação simples (2) Exemplo: A aplicação Oi e Tchau. A implementação da aplicação no arquivo "OiTchau.cpp" poderia ser a seguinte: #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "OiTchau.h" IMPLEMENT_APP(OiTchau) bool OiTchau::OnInit() { wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, "Aplicação OiTchau"); frame->CreateStatusBar(); frame->SetStatusText("Oi e Tchau!!!"); frame->Show(TRUE); SetTopWindow(frame); return true; } DECLARE_APP e IMPLEMENT_APP são macros que dependendo da plataforma, cria a funçãp main( ) ou WinMain( ), entre outras coisas.

28 Revisão da Plataforma wxWindows Junho de 2003 28 P4 – Compilando com o Borland Command line tools Pré-Requisitos: Instalação do wxWindows: Executar setup.exe. Pré-compilação do wxWindows: (opicional) Através de um makefile que vem com o wxWindows. ( detalhes install.txt, na documentação) Desenvolve-se a aplicação e compila-se usando um makefile ou não. Foi compilado um dos demos, um jogo, usando um makefile. Comentários: O passo de pré-compilação demora uns 10 a 15 minutos. Não houve nenhum problema durante a instalação e pré-compilação da biblioteca. Depois desses dois passos o wxWindows mostrou-se pronto para uso, não apresentando nenhum problema durante a compila- ção do demo.

29 Revisão da Plataforma wxWindows Junho de 2003 29 P4 - Compilando com GCC e Autotools (Linux, Mingw, etc.) O processo de compilação do wxWindows com gcc é extremamente simples com o auxílio do autoconf e do automake. Basta executar os comandos configure; make; make install no diretório principal da distribuição. Cada programa demonstração deve ser compilado de forma semelhante porém separadamente.

30 Revisão da Plataforma wxWindows Junho de 2003 30 P5 - Links Site Oficial: www.wxwindows.org Lista de discussão wxWindows & Dev-C++: g.yi.org/Forum/list.php?f=13 Empresa de Julian Smart: www.anthemion.co.uk/


Carregar ppt "Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações Grupo: Gabriel Feldman José Augusto Araújo Wladmir Chapetta Junho de 2003 UFRJ."

Apresentações semelhantes


Anúncios Google