1 / 30

Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações

UFRJ - INFO - PSI. Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações. Grupo: Gabriel Feldman José Augusto Araújo Wladmir Chapetta. Junho de 2003. Sumário. PARTE 1. Fabricante PARTE 2. Produtos, ferramentas e componentes PARTE 3. Arquitetura de Desenho

dard
Download Presentation

Revisão da Plataforma para Desenvolvimento Orientado a Objeto de Aplicações

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Sumário • PARTE 1. Fabricante • PARTE 2. Produtos, ferramentas e componentes • PARTE 3. Arquitetura de Desenho • PARTE 4. Exemplos de aplicações • Links 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. 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. 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). 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. 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++ 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. 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. 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. 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). 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). 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”. 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 Revisão da Plataforma wxWindows Junho de 2003

  15. P2 - Produtos relacionados • IDEs e Editores de Caixas de Diálogo: • wxDesigner <http://www.roebling.de/> * • 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 <http://www.anthemion.co.uk/dialogblocks> • DialogBlocks editor de caixas de diálogo comercial para wxWindows que suporta • C++ and XRC. • Dev-C++ <http://www.bloodshed.net> * • IDE Windows para trabalhar MinGW, trabalha bem com wxWindows. • MinGW Developer Studio <http://parinya.homeip.net/> • MinGW Developer Studio é uma IDE C/C++ simples para MinGW, escrito usando • wxWindows e MinGW. Usa GNU C/C++ e GNU gdb. Revisão da Plataforma wxWindows Junho de 2003

  16. P2 - Produtos relacionados (2) • IDEs e Editores de Caixas de Diálogo: • wxWorkshop <http://wxworkshop.sourceforge.net/> • IDE para wxWindows escrito com wxWindows. • wxHatch <http://biolpc22.york.ac.uk/wx/wxhatch/help/> • Gerador de código for wxWindows. • VisualWx <http://visualwx.altervista.org/> * • Ferramenta de desenho de forms para wxWindows. • SlickEdit <http://www.slickedit.com> • IDE para Linux. • CodeForge <http://www.codeforge.com> • IDE para Linux. • Anjuta <http://anjuta.sourceforge.net> • IDE para Linux. 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... 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... Revisão da Plataforma wxWindows Junho de 2003

  19. P3 - Diagrama UML de classes: uma pequena amostra... 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. 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. 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. 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 ! Revisão da Plataforma wxWindows Junho de 2003

  24. wxInputStream wxOutputStream wxFileInputStream wxFileOutputStream wxFileStream 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: 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"). 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. 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. 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. 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. 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/ Revisão da Plataforma wxWindows Junho de 2003

More Related