Técnicas de Programação:



Documentos relacionados
Programação Orientada a Objetos em C++: introdução à herança

Prof. Jhonatan Fernando

Componentes da linguagem C++

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

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

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Pilhas. Profa Morganna Diniz

Computação e Programação Aula prática nº 5. Enunciados dos problemas

Linguagem de Programação III

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos em Java

Fundamentos de Programação II. Introdução à linguagem de programação C++

Programação de Computadores Primeiros Passos Práticos em C++

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Módulo 4. Instruções for, while e do/while. Algoritmos e Estruturas de Dados I C++ (Rone Ilídio)

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Guia e Utilização do Visual Studio 6.0

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

Engenharia de Software

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

LISTA DE EXERCÍCIOS 2

Aula 11: Laços e exercícios

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Programação científica C++

Técnicas de Programação:

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

Reuso com Herança a e Composiçã

Aula 3 Objeto atual com referencia THIS e Classes com Herança

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

ESTRUTURA COM DECISÃO COMPOSTA

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

Aula 05: Condicionais (Parte 2)

Polimorfismo. Prof. Leonardo Barreto Campos 1

Conceito de classe em C++

NetBeans. Conhecendo um pouco da IDE

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

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

Aula 10: Manipulação do fluxo de laços

Herança. Algoritmos e Programação II. Aula 5 Herança

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Fundamentos de Programação Linguagem C++ Entrada e saída com arquivos

DE JAVA AO C++ Prof. Cesar Augusto Tacla

Técnicas de Programação II

Orientação a Objetos e a Linguagem Java

Algoritmos e Programação Estruturada

Olimpíadas de Informática

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

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

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

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

Programação Orientada a Objetos. Encapsulamento

Tópicos em Engenharia de Computação

Linguagem de Programação C++

Aula 06 Usando controles em ASP.NET

INFORMÁTICA E COMPUTAÇÃO CMP 1060 CONTROLE DE FLUXO ESTRUTURA CONDICIONAL 1

Programação e Sistemas de Informação

OO Engenharia Eletrônica

Mestrado em Matemática Financeira

Padrão Básico de Projeto: Interfaces e Polimorfismo

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

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

Java. Marcio de Carvalho Victorino

Analise o código abaixo:

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Aula 14: Funções Passagem de Parâmetros por Referência

Encapsulamento de Dados

Java 2 Standard Edition Como criar classes e objetos

ITENS FUNDAMENTAIS Programando em C++

Módulo 07 Características Avançadas de Classes

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Computação L2. Arquivos. Observação: Material da Disciplina Computação Eletrônica CIN/UFPE.

Programação Orientada por Objetos

UNIVERSIDADE FEDERAL DO PARANÁ

Linguagem C/C++ Estrutura Condicional. Prof: Rosemary Melo

Aula 1 Tipo Abstrato de Dados

Lista de Exercícios da 3ª Unidade. ( Ponteiros, Alocação dinâmica, Arquivos, Estruturas de Dados)

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

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Programação aplicada de computadores Andréa Maria Pedrosa Valli

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Guia de Fatores de Qualidade de OO e Java

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

Programação Orientada a Objetos C++

Transcrição:

Técnicas de Programação: Programação Orientada a Objeto PROF. PROTÁSIO DEE-UFPB

Programação Orientada a Objeto Herança É uma forma de reutilização de software em que o programador cria uma classe que absorve dados e comportamentos de uma classe existente e os aprimora com novas capacidades. É uma forma de reusar ou aproveitar software já testados e depurados Reusabilidade Denominações 2 Em C++ Java Classe Original Classe Básica Superclasse Nova Classe Classe Derivada subclasse

Herança Exemplo de herança O objeto círculo herda características da classe bidimensional que, por sua vez, herda da classe forma. Ou seja: o círculo é um objeto bidimensional que é uma forma. 3 Forma Bidimensional Tridimensional Círculo Quadrado Triângulo Retângulo Esfera Cubo Tetraedro

Herança Exemplo de programação de herança 4 Veículo Caminhão Automóvel

Classe VEICULO No trecho de código abaixo tem-se a definição da classe veiculo 5 class veiculo int passageiros; int rodas; public: void set_rodas(int num) rodas = num; ; int get_rodas() return rodas; ; void set_pass(int num) passageiros = num; ; int get_pass() return passageiros; ; ;

Classe CAMINHÃO (sem herança) 6 class caminhao Repetição do int passageiros; mesmo código int rodas; da classe veiculo int carga; public: void set_rodas(int num) rodas = num; ; int get_rodas() return rodas; ; void set_pass(int num) passageiros = num; ; int get_pass() return passageiros; ; ; void set_carga(int num) carga = num; ; int get_carga() return carga; ; void show(); Claramente ver-se que boa parte do código de veículo pode ser aproveitada na classe caminhão Ver-se que as particularidades de caminhão (carga, etc...) é que precisam ser programadas

Classe CAMINHÃO (com herança) O : indica que a classe caminhao herda da classe class caminhao : public veiculo veiculos seus int carga; membros public: void set_carga(int num) carga = num; ; int get_carga() return carga; ; void show(); ; 7 public Indica que a classe caminhao só tem acesso aos membros públicos de veiculo Existem outros especificadores: protected private

Classe automovel(com herança) 8 class automovel : public veiculo int tipo; // 0 = Van, 1 = Carro e 2 = SUV public: void set_type(int t) tipo = t; ; int get_type() return tipo; ; void show(); ;

Funções-membros // Descrição das Funções void caminhao::show() cout << "\ninformacao do Caminhao\n"; cout << "Quantidade de rodas: " << get_rodas() << endl; cout << "Quantidade maxima de passageiros: " << get_pass() << endl; cout << "Capacidade maxima para transporte (carga): " << get_carga() << endl; 9 void automovel::show() cout << "\ninformacao do Automovel\n"; cout << "Quantidade de rodas: " << get_rodas() << endl; cout << "Quantidade maxima de passageiros: " << get_pass() << endl; cout << "Tipo de automovel: "; switch(get_type()) case 0: cout << " Van\n"; break; case 1: cout << " Carro\n"; break; case 2: cout << " SUV\n"; break;

Programa Principal int main() caminhao t1, t2; automovel c; 10 t1.set_rodas(18); t1.set_pass(2); t1.set_carga(3200); t2.set_rodas(6); t2.set_pass(3); t2.set_carga(1200); t1.show(); t2.show(); c.set_rodas(4); c.set_pass(10); c.set_type(0); c.show(); system("pause"); return 0;

Separando as definições de classes em arquivos de cabeçalho 11 Considere o programa anterior Coloque a definição da classe veiculo em arquivo separado do arquivo que contém o main.

Separando as definições de classes em arquivos de cabeçalho 12 Passos Adicione um arquivo de cabeçalho BD Add New Item Header File Minhas_classes.h No arquivo principal, inclua: #include "Minhas_classes.h"

#include <iostream> using namespace std; class veiculo // Definicao da classe generica veiculo int passageiros; int rodas; public: void set_rodas(int num) rodas = num; ; int get_rodas() return rodas; ; void set_pass(int num) passageiros = num; ; int get_pass() return passageiros; ; ; class caminhao : public veiculo // Definicao da classe caminhao int carga; public: void set_carga(int num) carga = num; ; int get_carga() return carga; ; void show(); ; class automovel : public veiculo // Definicao da classe automovel int tipo; // 0 = Van, 1 = Carro e 2 = SUV public: void set_type(int t) tipo = t; ; int get_type() return tipo; ; void show(); ; void caminhao::show() // Descrição das Funções cout << "\ninformacao do Caminhao\n"; cout << "Quantidade de rodas: " << get_rodas() << endl; cout << "Quantidade maxima de passageiros: " << get_pass() << endl; cout << "Capacidade maxima para transporte (carga): " << get_carga() << endl; void automovel::show() cout << "\ninformacao do Automovel\n"; cout << "Quantidade de rodas: " << get_rodas() << endl; cout << "Quantidade maxima de passageiros: " << get_pass() << endl; cout << "Tipo de automovel: "; switch(get_type()) case 0: cout << " Van\n"; break; case 1: cout << " Carro\n"; break; case 2: cout << " SUV\n"; break; Minhas_classes.h 13

#include <iostream> #include "Minhas_classes.h" int main() caminhao t1, t2; automovel c; t1.set_rodas(18); t1.set_pass(2); t1.set_carga(3200); t2.set_rodas(6); t2.set_pass(3); t2.set_carga(1200); t1.show(); t2.show(); c.set_rodas(4); c.set_pass(10); c.set_type(0); c.show(); Arquivo Fonte Principal 14 system("pause"); return 0;

Exercício Programe a classe motocicleta que seja derivada da classe básica veiculo e que contenha: Membros privados: numero_capacete Funções públicas: Para setar o número de capacetes disponíveis Para pegar o número de capacetes disponíveis 15

Enumerações Um enum (enumeração) é um tipo definido pelo usuário (programador) que consiste em constantes do tipo int nomeadas. Exemplo usando a diretiva de pré-processamento #define #define BRASIL 0 #define ITALIA 1 #define PORTUGAL 2 #define ALEMANHA 3 Exemplo usando enum enum ; BRASIL, ITALIA, PORTUGAL, ALEMANHA BRASIL = 0 ITALIA = 1 PORTUGAL = 2 ALEMANHA = 3 16

Exemplo usando a diretiva de préprocessamento #define 17 #include <iostream> #define BRASIL 0 #define ITALIA 1 #define PORTUGAL 2 #define ALEMANHA 3 using namespace std; int main() int n; cout << "Digite um numero entre 0 e 4 " << endl; cin >> n; if (n == BRASIL ) cout << "Voce escolheu o Brasil" << endl; else if (n == ITALIA ) cout << "Voce escolheu a Italia" << endl; else if (n == PORTUGAL ) cout << "Voce escolheu Portugal" << endl; else if (n == ALEMANHA ) cout << "Voce escolheu a Alemanha" << endl; else if (n!= BRASIL n!= ITALIA n!= PORTUGAL n!= ALEMANHA ) cout << "Erro: voce escolheu um numero errado!!" << endl; system("pause"); return 0;

Exemplo usando enum #include <iostream> using namespace std; 18 enum ; BRASIL, ITALIA, PORTUGAL, ALEMANHA int main() int n; cout << "Digite um numero entre 0 e 4 " << endl; cin >> n; if (n == BRASIL ) cout << "Voce escolheu o Brasil" << endl; else if (n == ITALIA ) cout << "Voce escolheu a Italia" << endl; else if (n == PORTUGAL ) cout << "Voce escolheu Portugal" << endl; else if (n == ALEMANHA ) cout << "Voce escolheu a Alemanha" << endl; else if (n!= BRASIL n!= ITALIA n!= PORTUGAL n!= ALEMANHA ) cout << "Erro: voce escolheu um numero errado!!" << endl; system("pause"); return 0;

Outro exemplo usando enum 19 #include <iostream> using namespace std; enum Paises BRASIL, ITALIA, PORTUGAL, ALEMANHA ; int main() int n ; cout << "Digite um numero entre 0 e 4 " << endl; cin >> n; Paises pais = (Paises)n; // Conversão explícita (CASTING) if (pais == BRASIL ) cout << "Voce escolheu o Brasil" << endl; else if (pais == ITALIA ) cout << "Voce escolheu a Italia" << endl; else if (pais == PORTUGAL ) cout << "Voce escolheu Portugal" << endl; else if (pais == ALEMANHA ) cout << "Voce escolheu a Alemanha" << endl; else if (pais!= BRASIL pais!= ITALIA pais!= PORTUGAL pais!= ALEMANHA ) cout << "Erro: voce escolheu um numero errado!!" << endl; system("pause"); return 0;

Erro porque ITALIA é definidada 2 vezes 20 enum Paises BRASIL, ITALIA, ALEMANHA ; enum Uvas RUBI, ITALIA, UMOUTROTIPODEUVA ;

Solução namespace Paises enum BRASIL, ITALIA, ALEMANHA ; 21 namespace Uvas enum ; RUBI, ITALIA, UMOUTROTIPODEUVA //*...*// //Modo de uso: std::cout << Uvas::ITALIA; std::cout << Paises::ITALIA;