Orientação a Objetos - Programação em C++



Documentos relacionados
Orientação a Objetos - Programação em C++

OO Engenharia Eletrônica

Orientação a Objetos Programação em C++

Orientação a Objetos - Programação em C++

Plugins TerraView. Última revisão: 12/12/32006 Versão TerraLib: 3.1.4

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Mini Curso DESCOMPLICANDO C# Professor Hélio

Prof. Jhonatan Fernando

O Primeiro Programa em Visual Studio.net

6.2 Desenvolvimento do projecto Tarefas para VC++

Para baixá-lo entre no site : Selecione a aba Downloads ; Clique no link: Microsoft Visual C# Express 2010; Por meio desse

CLP - Guide to Automated Subkects

GraphicsLib Biblioteca Gráfica 2D. Documentação

Plugins TerraView. Versão TerraLib/TerraView: 3.2.0RC2. Código fonte completo da TerraLib na estrutura de diretórios sugerida no site da TerraLib 1.

Microsoft Office PowerPoint 2007

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

PROGRAMAÇÃO EM C# COM VISUAL STUDIO.NET

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Guia e Utilização do Visual Studio 6.0

OO Engenharia Eletrônica

MANUAL DE UTILIZAÇÃO DO PLUGIN GERADOR DE PLUGINS DO TERRAVIEW

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Disciplina: INF Programação I. 1 a aula prática Introdução ao ambiente do Microsoft Visual Studio 2010

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica

Introdução a Programação de Jogos

Orientação a Objetos

Prof. Esp. Adriano Carvalho

FBV - Linguagem de Programação II. Um pouco sobre Java

Desenvolvimento de Aplicações Locais na Plataforma Microsoft

Introdução a Linguagem C

insfcanceof new public switch transient while byte continue extends for int null

Programação por Objectos. Java

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Desenvolvimento OO com Java Orientação a objetos básica

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

DCC 003 Algoritmos e Estruturas de Dados I Tutorial de instalação do GCC e do TextPad

Treinar - Cursos e Treinamentos C# Módulo I. Carga horária: 32 Horas

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Introdução ao Desenvolvimento de Interfaces Multitoque com PyMT

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

Manual de Instalação Software do Cartão Inteligente

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Introdução a Programação de Jogos

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

CICLO DE APERFEIÇOAMENTO PROFISSIONAL DOS SERVIDORES MUNICIPAIS DE MARICÁ- RJ EDITOR DE TEXTO - WORD

Instalação do Java SDK (Software Development Kit)

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Índice

COORDENAÇÃO DE TECNOLOGIA (COTEC) JANEIRO/2011

Versão PIMACO AUTOADESIVOS LTDA. Assistente Pimaco Ajuda ao Usuário

Tutorial J2ME Parte 3

Arduino e Processing. Professor: Paulo Marcos Trentin Escola CDI Videira

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Especialização em Engenharia de Software - CEUT

Programação para Android. Aula 06: Activity, menus e action bar

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Sintaxe Básica de Java Parte 1

Básico, Ferramentas e o Primeiro Programa em Qt

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 05: Editores de Imagem Paint / GIMP

Introdução a Programação de Jogos

Criação e execução a partir do Dev-C... 1 Erros de compilação... 4 Executar programa no DOS... 4 Ajustando o programa para executar no DOS...

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Instalar corretamente as ferramentas necessárias para a criação dos jogos

2 Orientação a objetos na prática

Templates e Pilhas. 1. Introdução

Como usar o bluej. Laboratório I Prof.ª Vera Alves

Profº. Enrique Pimentel Leite de Oliveira

Carlos Eduardo Batista. Centro de Informática - UFPB

CURSO DE PROGRAMAÇÃO EM JAVA

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1

Programação Gráfica Parte 2 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano

AULA 2. Minicurso PET-EE UFRN

POWER POINT 2003 CARREGANDO O POWER POINT

Orientação a Objetos. Programação em C++

POO Programação Orientada a Objetos. Classes em Java

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Microsoft Visual Studio Express 2012 for Windows Desktop

Algoritmos e Técnicas de

Arquivos de Textos no C - Básico

Universidade Federal de Santa Maria Departamento de Eletrônica e Computação Disciplina de Fundamentos de Comuputadores Professor Raul Ceretta Nunes

VisTrails. Fernando Seabra Chirigati Aluno de Engenharia de Computação e Informação COPPE/UFRJ fernando_seabra@cos.ufrj.br

MANUAL DE NORMAS PARA DESENVOLVIMENTO DE CÓDIGO DA FÁBRICA VIRTUAL DE SOFTWARE DA FIPP. Curso Superior de Tecnologia em Sistemas para Internet 2/2014

Ambiente Online de Programação em C.

Plugins TerraView. Versão TerraLib/TerraView: Código fonte completo da TerraLib na estrutura de diretórios sugerida no site da TerraLib 1.

Orientação a Objetos com Java

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++

Linguagem de Programação III

ESTUDO DE CASO WINDOWS VISTA

Criando uma agenda simples com NetBeans 6.5

Laboratório de Programação I

Programação de Computadores I. Conhecendo a IDE Code::Blocks

Programação Orientada a Objetos em java. Polimorfismo

Guia de Fatores de Qualidade de OO e Java

INTRODUÇÃO À LINGUAGEM C/C++

2. INSTALAÇÃO E CONFIGURAÇÃO

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Transcrição:

OO- Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 17C: Programação Visual ou Orientada a Objetos Gráficos (Formulários, Botões, Caixas de Texto etc) Exemplificado em MFC, com o Microsoft Visual Studio. Prof. Jean Marcelo SIMÃO Aluno: Vagner Vengue

Programação Visual. Estudar os código de exemplo. Entender como os objetos de MFC são relacionados com o código do projeto em C++. Entender que este código C++ especial serve para tratar os eventos sobre objetos gráficos. Entender que, em um projeto real, o código essencial do sistema deve ser o mais independente possível do código relacionado aos objetos gráficos. No ProjetoOOJanelaExemplo é tratada a classe Universidade e o seu Relacionamento para com a classe Departamento. De forma análoga, tratar as demais classes existentes nas versões precedentes do sistema de universidade (Disciplina, Alunos etc).

MFC Microsoft Foundation Classes - É uma biblioteca de classes fornecidas pela Microsoft para programação para Windows, que fornece uma abstração da Win32 API para o desenvolvimento de interfaces gráficas, threads e comunicação TCP, entre outras funcionalidades, como classes para coleções de dados (semelhante a STL). - Desde a segunda versão, é distribuída em conjunto com o Visual Studio, no entanto, não acompanha as versões express atuais (2005, 2008 e 2010). - Principais classes: CWinApp, CFrameWnd, CString, CButton, CEdit, CStatic, CListBox, CComboBox, Carray. - CWinApp é uma interface para a criação de aplicações MFC e CFrameWnd é uma interface para a criação de interfaces gráficas.

MFC Microsoft Foundation Classes Exemplo de Introdução

Microsoft Visual Studio (MFC)

Microsoft Visual Studio (MFC)

Microsoft Visual Studio (MFC)

Microsoft Visual Studio (MFC) Marque esta opção para que o Visual Studio não gere códigos automaticamente.

Microsoft Visual Studio (MFC) Informe ao Visual Studio que o projeto utilizará as bibliotecas de MFC.

Microsoft Visual Studio (MFC)

MFC Microsoft Foundation Classes - Adicione cinco arquivos ao projeto, que podem se chamar: Main.cpp, MyWinApp.h, MyWinApp.cpp, MainFrame.h e MainFrame.cpp. Depois adicione o código do próximo slide em cada arquivo. - Os arquivos MyWinApp deverão conter uma classe derivada de CWinApp e, obrigatoriamente, esta classe deverá redefinir o método InitInstance(). - Os arquivos MainFrame deverão conter uma classe derivada de CFrameWnd e esta será a janela principal do programa. - Main.cpp: deverá ser o ponto de entrada do programa, contendo um objeto da classe CMyWinApp, utilizada no exemplo.

Microsoft Visual Studio (MFC) // Main.cpp #include "MyWinApp.h" CMyWinApp app; // MyWinApp.h #pragma once #include <afxwin.h> class CMyWinApp : public CWinApp public: CMyWinApp(); ~CMyWinApp(); virtual BOOL InitInstance(); ; // MyWinApp.cpp #include "MyWinApp.h" #include "MainFrame.h" CMyWinApp::CMyWinApp() CMyWinApp::~CMyWinApp() BOOL CMyWinApp::InitInstance() CMainFrame* pframe = new CMainFrame(); m_pmainwnd = pframe; pframe->showwindow( SW_SHOW ); return TRUE; m_pmainwnd é um atributo de CWinApp, utilizado para indicar qual é a janela principall. // MainFrame.h #pragma once #include <afxwin.h> class CMainFrame : public CFrameWnd private: CString mstr; public: CMainFrame(); ~CMainFrame(); afx_msg void OnPaint(); DECLARE_MESSAGE_MAP(); ; // MainFrame.cpp #include "MainFrame.h" BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() END_MESSAGE_MAP() CMainFrame::CMainFrame() Create(NULL, "Exemplo01", WS_OVERLAPPEDWINDOW, CRect(50, 50, 500, 300) ); mstr = "Hello World!"; CMainFrame::~CMainFrame() void CMainFrame::OnPaint() CPaintDC dc( this ); dc.textouta(60, 20, mstr);

Microsoft Visual Studio (MFC) Para compilar e executar, pressione F5.

MFC Microsoft Foundation Classes Adicionando um botão...

Microsoft Visual Studio (MFC) // MainFrame.h #pragma once #include <afxwin.h> class CMainFrame : public CFrameWnd private: CString mstr; CButton btnhello; public: CMainFrame(); ~CMainFrame(); afx_msg void OnPaint(); afx_msg void OnClickBtnHello(); ; DECLARE_MESSAGE_MAP(); // MainFrame.cpp #include "MainFrame.h" #define IDC_BTN_HELLO 300 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() ON_BN_CLICKED(IDC_BTN_HELLO, OnClickBtnHello) END_MESSAGE_MAP() CMainFrame::CMainFrame() mstr = "Hello World!"; Create(NULL, "Exemplo01", WS_OVERLAPPEDWINDOW, CRect(CPoint(50, 50), CSize(500, 300)) ); btnhello.create("click aqui!", WS_CHILD WS_VISIBLE BS_DEFPUSHBUTTON, CRect(CPoint(200, 200), CSize(100, 30)), this, IDC_BTN_HELLO); CMainFrame::~CMainFrame() void CMainFrame::OnClickBtnHello() MessageBox("Hello World!", "Exemplo01"); void CMainFrame::OnPaint() CPaintDC dc( this ); dc.textouta(60, 20, mstr);

Microsoft Visual Studio (MFC) Para compilar e executar, pressione F5.

Microsoft Visual Studio (MFC)

Microsoft Visual Studio (MFC) ProjetoOOJanelaExemplo

Agregação de Janelas (objetos) // Main.cpp #include "MyWinApp.h" CMyWinApp app; // MyWinApp.h #pragma once #include <afxwin.h> class CMyWinApp : public CWinApp public: CMyWinApp(); ~CMyWinApp(); ; virtual BOOL InitInstance(); // MyWinApp.cpp #include "MyWinApp.h" #include "MainFrame.h" CMyWinApp::CMyWinApp() CMyWinApp::~CMyWinApp() BOOL CMyWinApp::InitInstance() CMainFrame* pframe = new CMainFrame(); m_pmainwnd = pframe; pframe->showwindow( SW_SHOW ); pframe->updatewindow(); return TRUE; // MainFrame.h #pragma once #include <afxwin.h> #include "Principal.h" #include "Departamento.h" #include "frmadicionauniver.h class CMainFrame : public CFrameWnd private: CButton btniniciar; CButton btnadicionar; CListBox ltuniver; CListBox ltdepart; CStatic lbuniver; CStatic lbdepart; Principal* objeto_principal; frmadicionauniver* frmadiciona; public: CMainFrame(); ~CMainFrame(); void init(); ; afx_msg void OnClickBtnIniciar(); afx_msg void OnClickBtnAdicionar(); afx_msg void OnChangeLtUniver(); DECLARE_MESSAGE_MAP();

Agregação de Janelas (objetos) // MainFrame.cpp #include "MainFrame.h" #define IDC_BTN_INICIAR 300 #define IDC_BTN_ADICIONAR 301 #define IDC_LBN_UNIVER 302 #define IDC_LBN_DEPART 303 Macros pré-definidas de MFC para o tratamento de eventos. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_BN_CLICKED(IDC_BTN_INICIAR, OnClickBtnIniciar) ON_BN_CLICKED(IDC_BTN_ADICIONAR, OnClickBtnAdicionar) ON_LBN_SELCHANGE(IDC_LBN_UNIVER, OnChangeLtUniver) END_MESSAGE_MAP() void CMainFrame::init() Create(NULL, "ProjetoOOJanelaExemplo", WS_OVERLAPPEDWINDOW, CRect(CPoint(50, 50), CSize(500, 300))); Inicialização dos objetos gráficos de MFC. lbuniver.create("lista de Universidades", WS_VISIBLE WS_CHILD, CRect(CPoint(50, 25), CSize(180, 20)), this); lbdepart.create("lista de Departamentos", WS_VISIBLE WS_CHILD, CRect(CPoint(250, 25), CSize(180, 20)), this); btniniciar.create("iniciar", WS_CHILD WS_VISIBLE BS_DEFPUSHBUTTON, CRect(CPoint(50, 200), CSize(100, 30)), this, IDC_BTN_INICIAR); btnadicionar.create("adicionar", WS_CHILD WS_VISIBLE BS_DEFPUSHBUTTON, CRect(CPoint(180, 200), CSize(100, 30)), this, IDC_BTN_ADICIONAR); ltuniver.create(ws_child WS_VISIBLE WS_BORDER LBS_STANDARD, CRect(CPoint(50,50), CSize(180, 130)), this, IDC_LBN_UNIVER); ltdepart.create(ws_child WS_VISIBLE WS_BORDER LBS_STANDARD, CRect(CPoint(250,50), CSize(180, 130)), this, IDC_LBN_DEPART);

Agregação de Janelas (objetos) void CMainFrame::OnClickBtnIniciar() while ( ltuniver.getcount() > 0 ) ltuniver.deletestring( 0 ); objeto_principal->iteradorluniversidades = objeto_principal->luniversidades.begin(); while (objeto_principal->iteradorluniversidades!= objeto_principal->luniversidades.end()) string aux; aux = (*(objeto_principal->iteradorluniversidades))->getnome(); ltuniver.addstring( aux.data() ); objeto_principal->iteradorluniversidades++; void CMainFrame::OnClickBtnAdicionar() if (frmadiciona == NULL!IsWindow( *frmadiciona )) frmadiciona = new frmadicionauniver(objeto_principal); frmadiciona->showwindow( SW_SHOW ); frmadiciona->bringwindowtotop();

Agregação de Janelas (objetos) Para compilar e executar, pressione F5.

Agregação de Janelas (objetos)

Microsoft Visual Studio (MFC) Exemplo com figuras geométricas

// Main.cpp #include "MyWinApp.h" CMyWinApp app; // MainFrame.h #pragma once #include <afxwin.h> Exemplo com desenhos // MyWinApp.h #pragma once #include <afxwin.h> class CMyWinApp : public CWinApp public: CMyWinApp(); ~CMyWinApp(); class CMainFrame : public CFrameWnd private: CButton btnmover; int valor_aumentar; public: CMainFrame(); ~CMainFrame(); ; afx_msg void OnPaint(); afx_msg void OnClickBtnMover(); DECLARE_MESSAGE_MAP(); ; virtual BOOL InitInstance(); // MyWinApp.cpp #include "MyWinApp.h" #include "MainFrame.h CMyWinApp::CMyWinApp() CMyWinApp::~CMyWinApp() BOOL CMyWinApp::InitInstance() CMainFrame* pframe = new CMainFrame(); m_pmainwnd = pframe; pframe->showwindow( SW_SHOW ); pframe->updatewindow(); return TRUE;

// MainFrame.cpp #include "MainFrame.h" #define IDC_BTN_MOVER 300 Exemplo com desenhos BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() ON_BN_CLICKED(IDC_BTN_MOVER, OnClickBtnMover) END_MESSAGE_MAP() CMainFrame::CMainFrame() Create(NULL, "Tela de desenhos", WS_OVERLAPPEDWINDOW, CRect(CPoint(50, 50), CSize(500, 500))); btnmover.create("mover", WS_CHILD WS_VISIBLE BS_DEFPUSHBUTTON, CRect(CPoint(350, 400), CSize(100, 30)), this, IDC_BTN_MOVER); valor_aumentar = 0;

void CMainFrame::OnPaint() CPaintDC dc( this ); int x, y; x = 10; Exemplo com desenhos y = 10 + valor_aumentar; dc.ellipse(x, y, x+50, y+50); x += 100; dc.moveto(x, y); dc.lineto(x+50, y); x += 100; dc.rectangle(x, y, x+50, y+60); // desenha uma elipse; // move para uma posição da tela; // desenha uma reta; // desenha um retângulo; void CMainFrame::OnClickBtnMover() // incrementa um valor para a posição y dos desenhos; valor_aumentar += 10; // repinta a tela; this->redrawwindow();

Para compilar e executar, pressione F5. Exemplo com desenhos

Bibliografias - Para mais detalhes sobre MFC, consulte: http://www.codersource.net/mfc.aspx (acesso em 02/08/2010). http://www.cpdee.ufmg.br/~seixas/paginaatr/download/atrdownload.htm (acesso em 02/08/2010). http://en.wikipedia.org/wiki/microsoft_foundation_class_library (acesso em 02/08/2010).