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

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

1 Plataforma de Desenvolvimento de Software Camille Furtado Fabio Heuseler Rafael Lychowski.

Apresentações semelhantes


Apresentação em tema: "1 Plataforma de Desenvolvimento de Software Camille Furtado Fabio Heuseler Rafael Lychowski."— Transcrição da apresentação:

1 1 Plataforma de Desenvolvimento de Software Camille Furtado Fabio Heuseler Rafael Lychowski

2 2 O que wxWindows? Conjunto de bibliotecas que permite que aplicações C++ sejam compiladas e rodem em diferentes tipos de computadores, com mínima mudança no código fonte. É uma API fácil e de simples uso, basta linkar com a biblioteca apropriada da plataforma desejada e a aplicação adotará a aparência da plataforma. Oferece help on line, programação para rede, multithreading, suporte a banco de dados, e muito mais

3 3 O que é wxWindows? (2) Visto que provê uma série de funcionalidades built-in, as quais poderão ou não ser usadas pela aplicação, wxWindows é um framework. Dentre algumas de suas vantagens podemos citar: Free (gratuito para download) Open source (código aberto) Simplicidade de programação Suporte a uma grande faixa de compiladores C++

4 4 Fabricante – Informaçãoes gerais Criado por Julian Smart (líder do projeto) a partir de 1992 no Artificial Intelligence Applications Institute, University of Edinburgh e posteriormente liberado pela instituição para livre desenvolvimento e distribuição Julian declara no site de sua empresa de consultoria Anthemion Software, que esta é a fabricante e proprietária do framework, já que o produto é free e open source

5 5 Fabricante – Informaçãoes gerais (2) Julian estava elaborando uma ferramenta meta-CASE chamada Hardy que precisava rodar em Windows e em workstations X-based Unix. As ferramentas existentes compatíveis com várias plataformas eram muito caras para um projeto experimental caseiro, então a única alternativa era construir uma. 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

6 6 Fabricante – 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): entre várias outras coisas, contribuiu com o mxWSW Stefan Csomor: wxMac Vadim Zeitlin: wxUniversal e várias outras contribuições Robert Roebling: wxGTK Robin Paul Dunn: wxPython

7 7 Fabricantes – Desenvolvedores (2) Ao longo da história do projeto, várias dezenas de pessoas contribuíram para aumentar a portabilidade do framework, tornando-o mais eficiente nas várias plataformas e criando novas bibliotecas, componentes e ferramentas auxiliares para o uso do framework.

8 8 Fabricante – Retorno Financeiro O retorno financeiro é dado através de: Venda do wxWindows em CD-ROM, 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 o uso do wxWindows Divulgação do nome dos desenvolvedores e suas empresas.

9 9 Fabricante – 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 corrigi-los.

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

11 11 Diagrama do wxUniversal Uma biblioteca para criação de janelas independente do Sistema Operacional Com a criação das janelas independente do SO, o wxUniversal permite utilizar qualquer look and feel em qualquer plataforma

12 12 Linguagens de mais alto nível O wxWindows está sendo importado para ser usado com algumas linguagens de mais alto nível

13 13 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 obsotela

14 14 Características de plataforma Disponível para as plataformas mais populares (Windows, Unix, Solaris...) Trabalha com a maioria dos compiladores C++ e Phyton Mais de 1000 páginas de documentação (inclusive on-line) API orientada a objeto de fácil uso Sistema de eventos flexível Chamadas gráficas (linhas, retângulos, polylines,...) Construção de layouts

15 15 Características de plataforma (2) 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) Suporte de Rede Suporte para processamento de imagens independente da plataforma Manipula muitos formatos de arquivos (BMP, GIF, PCX, JPEG, XPM, PNM,...)

16 16 Alguns compiladores compatíveis Compiladores MS-Windows Visual C++ 1.5, 4.0., 5.0 e 6.0 ( versão.NET sendo avaliada) Borland C e 5.0 Borland C++ Builder 1.0 e 3.0 Watcom C (Win32) Cygwin b20 Mingw32 Metrowerks CodeWarrior 4

17 17 Alguns compiladores compatíveis (2) Unix Grande parte dos compiladores C++, incluindo GNU C++ (EGCS ou citados anteriormente)

18 18 Produtos acessório 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 HTMLHelp, 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).

19 19 Produtos Acessório (2) Dialog Editor Permite criação de caixas de diálogos, produzindo arquivos WXR. Object Graphics Library OGL define API para aplicações que precisam mostrar objetos conectados por linhas que podem ser movidas e interagem. Frame Layout library Sofisticadas facilidades de drag and drop.

20 20 Produtos acessório (3) 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

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

22 22 Produtos Relacionados (2) 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 wxWorkshop IDE para wxWindows escrito com wxWindows. wxHatch Gerador de código for wxWindows VisualWx Ferramenta de desenho de forms para wxWindows

23 23 Produtos Relacionados (3) SlickEdit IDE para Linux CodeForge IDE para Linux Anjuta IDE para Linux

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

25 25 Categorias de classes (2) Run-time class information system: wxClassInfo, RTTI macros... Networking classes: wxSocketBase, wxSocketClient, wxFTP, wxHTTP... Document/view framework: wxDocument, wxView, wxDocTemplate... Printing framework: wxPrinter, wxPreviewFrame, wxPageSetupDialog... File related classes: wxDir, wxFileName, wxFile, wxFFile... Threading classes: wxThread, wxMutex, wxSemaphore... HTML classes: wxHtmlWindow, wxHtmlParser... XML-based resource system classes: wxXmlResource, wxXmlResourceHandler

26 26 Diagramas de Classes: uma pequena amostra

27 27 Algumas das principais classes 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.

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

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

30 30 Subst. do uso de polimorfismo por tabela de evento Solução adotada no MFC da Microsoft, com 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 !

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

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

33 33 Particularidades C++ no wxWindows (2) 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").

34 34 wxWindows X Eiffel

35 35 Comparação Característica wxWindowsEifel Alta Portabilidade xx Código Aberto x Documentação e Exemplos xx Poderoso Sistema de Eventos x Facilidades de Impressão x Facilidades de Debugging xx Funcionalidade de Banco de Dados xx Multithreading xx Web xx Integraçao OpenGl x Suporte a Múltiplas Linguagens x Comunidade de Usuários xx Herança Múltipla xx Sintaxe Limpa x Rapidez do Executável xx Reusabilidade de Código x

36 36 wxWindows X Eiffel Dificuldade de comparação wxWindows é um conjunto de bibliotecas Eiffel é uma linguagem de programação OO Vamos focar nossa comparação na capacidade de desenvolvimento em múltiplas plataformas

37 37 wxWindows wxWindows permite desenvolver no Windows 95/98/ME, Windows NT/2K/XP, Linux/Unix com o GTK+ toolkit e MacOS Então, você não tem que se preocupar que o seu investimento em desenvolvimento se tornará obsoleto pela necessidade de outra plataforma. Se você quiser, pode inclusive compilar aplicações Windows sem deixar seu ambiente Linux.

38 38 Eiffel Você poderá desenvolver sua aplicação uma úniva vez e poderá compilar aonde quiser Crie aplicações (incluindo GUIs) que irão rodar de forma idêntica no Linux, Unix e Windows utilizando Eiffel e suas bibliotecas de Multi-Plataformas

39 39 Instalação Depois de dezipar e fazer o processo normal de instalação usando setup.exe, a biblioteca precisa ser construída Usando makefiles Usando projeto VC e arquivos workspace (%wxwin%\src\wxvc.ds?) O help normalmente é encontrado no %wxwin%\docs Para rebuild all para debug e release configure o wxvc

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

41 41 Exemplo de aplicação simples 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.

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

43 43 Compilando com o 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.

44 44 Links Site Oficial: Lista de discussão wxWindows & Dev-C++: g.yi.org/Forum/list.php?f=13 Empresa de Julian Smart:


Carregar ppt "1 Plataforma de Desenvolvimento de Software Camille Furtado Fabio Heuseler Rafael Lychowski."

Apresentações semelhantes


Anúncios Google