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

Documentos relacionados
Introdução à Programação Orientada a Objetos em C++

Técnicas de Programação:

Linguagem de Programação. Diagrama de classes

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Linguagens de Programação

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Introdução à Programação. Encapsulamento e Herança

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Técnicas de Programação:

Laboratório de programação II

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Herança. BCC702-Programação de Computadores II Emiliana Mara Lopes Simões Universidade Federal de Ouro Preto abril 2010

Conceitos de Programação Orientada a Objetos

Fundamentos de Programação 2

//conteúdo do arquivo pacote.h

Introdução a Programação Orientada a Objetos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Linguagem de Programação Introdução a Orientação a Objetos

Friends e Sobrecarga

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

Curso de Programação C em Ambientes Linux Aula 04

Fundamentos de Programação

Fundamentos de Programação 2

Programação Orientada a Objeto: Introdução. Professor: Adonai Estrela Medrado Data: 22/07/2008

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Linguagem de Programação I

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Fundamentos de Programação

Programação Orientada a Objetos

Diagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15

ESTRUTURA COM DECISÃO COMPOSTA

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

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Herança em C++ Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2006/2007) Herança

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Curso Profissional de Gestão e Programação de Sistemas Informáticos

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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Programação Orientada a Objetos para Redes de Computadores

1 Introdução e Conceitos básicos

Linguagem de Programação C++

POO e C++: Herança e Polimorfismo

Orientação a Objetos AULA 06

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO MÚLTIPLA. Prof. Dr. Daniel Caetano

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

Programação Orientada a Objetos SANTOS, Rafael

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

Sobrecarga de Operadores

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Herança e Propriedades

Linguagem de Programação I

Programação Orientada a Objetos

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Programação Orientada a Objetos

Fundamentos de Programação

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

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

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Introdução e Conceitos

Carlos Eduardo Batista. Centro de Informática - UFPB

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO. Prof. Dr. Daniel Caetano

Prof. Jhonatan Fernando

C com introdução a OO

Exercícios... Capítulo 15. if62c. prof. Robinson Vida Noronha. Monday, March 23, 15

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Interfaces e Classes Abstratas

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA DE CIÊNCIAS E TECNOLOGIA. ECT1203 Linguagem de Programação Turma Prof.

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação Orientada a Objetos JAVA - NETBEANS

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Criando Classes em PHP

Programação Orientada a Objetos

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Linguagens de Programação

//conteúdo do arquivo ponto2dcirculo.h #ifndef PONTO2DCIRCULO_H #define PONTO2DCIRCULO_H class Ponto2D { public: Ponto2D (float, float); void setx

Aula 05: Condicionais (Parte 2)

Aula 10 Comandos de Repetição

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO. Prof. Dr. Daniel Caetano

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

Estrutura de dados 1. Ponteiros

O PARADIGMA ORIENTADO POR OBJETOS

Carlos Eduardo Batista. Centro de Informática - UFPB

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação Orientada a Objetos

Programação Orientada a Objetos CLASSES E OBJETOS

Transcrição:

Programação Orientada a Objetos em C++: introdução à herança Disciplina de Programação Científica II Aula 15 de 18 21/06/2013 Professor Giovani Gracioli giovanig@gmail.com

Objetivos Os objetivos dessa aula são: Apresentar herança em C++ Como criar uma classe que herda outra Noções de classes-base e classes derivadas e as relações entre elas Exercício 4 da lista 3

Competências Necessárias Para esta aula, vocês precisarão: Entender a linguagem de programação C, noções de programação e programação C++ Conteúdo relacionado às aulas anteriores e computação científica I Aulas 12 e 14 (C++)

Competências a Desenvolver Com essa aula, você aprenderá: A definir o que é herança em programação orientada a objetos A definir classe-base e classe derivada A declarar classes derivadas de classes-base em C++

Conteúdo

Introdução (1) Herança é uma forma de reutilização de software em que você cria uma classe que absorve dados e comportamentos de uma classe existente e os melhora com novas capacidades Você poderá designar que a nova classe deverá herdar os membros de uma classe já existente Essa classe existente é chamada de classebase, e a nova classe é conhecida como classe derivada

Introdução (2) Uma classe derivada representa um grupo de objetos mais especializados Uma classe derivada contém comportamentos herdados de sua classe-base e também comportamentos adicionais Uma classe derivada também pode personalizar comportamentos herdados da classe-base

Introdução (2) Herança Simples Uma classe é derivada de uma classe-base Herança Múltipla Uma classe derivada herda de várias classes-base (possivelmente não relacionadas) Estudaremos herança simples

Classes-base e classes derivadas Frequentemente, um objeto de uma classe também é um objeto de outra classe Por exemplo, na geometria, um retângulo é um quadrilátero (assim como os quadrados, paralelogramos e trapezoides) Assim, em C++, pode-se dizer que a classe Retangulo herda da classe Quadrilatero Nesse contexto, a classe Quadrilatero é uma classe-base, e a classe Retangulo é uma classe derivada Um retângulo é um tipo específico de quadrilátero, mas é incorreto afirmar que um quadrilátero é um retângulo o quadrilátero poderia ser um paralelogramo ou alguma outra forma

Exemplos de classes-base e derivadas

Acesso aos membros da classebase As funções-membro da classe derivada podem exigir o acesso a dados-membro e funçõesmembro da classe-base Uma classe derivada pode acessar os membros não private de sua classe-base Os membros de classe-base que não devem ser acessíveis às funções-membro de classes derivadas devem ser declaradas como private na classe-base

Exemplo: uma comunidade universitária

Declarando uma classe derivada Para declarar uma classe derivada de outra já existente, procedemos da seguinte forma class classe_derivada : public classe_base { //corpo da classe derivada }; Note o uso do operador : entre o nome da classe derivada e o nome da classe base. Este operador promove a herança entre as duas classes Antes do nome da classe base, devemos declarar o grau de visibilidade da classe base (public no exemplo)

Grau de Visibilidade public: Métodos ou atributos podem ser acessados por qualquer um, a partir do objeto da classe protected: Métodos ou atributos podem ser acessados somente por atributos da própria classe ou pela classe derivada private: Métodos ou atributos podem ser acessados somente por atributos da própria classe

Exemplo: veículos rodoviários (1) #include <iostream> using namespace std; class VeiculoRodoviario // Define uma classe base veículos. { private: int rodas; int passageiros; public: VeiculoRodoviario() { } VeiculoRodoviario(int r, int p) { rodas = r; passageiros = p; } void setrodas(int num) { rodas = num; } int getrodas() { return rodas; } void setpassageiros(int num) { passageiros = num; } int getpassageiros() { return passageiros; } }; class Caminhao : public VeiculoRodoviario // Define um caminhao. { int carga; public: Caminhao() { } Caminhao(int c, int r, int p) : VeiculoRodoviario(r, p) { carga = c; } void setcarga(int size) { carga = size; } int getcarga() { return carga; } void mostrar() { cout << rodas: << getrodas() << \n ; cout << passageiros: << getpassageiros() << \n ; cout << carga (capacidade em litros): << getcarga() << \n ; } };

Exemplo: veículos rodoviários (2) enum tipo {car, van, vagao}; class Automovel : public VeiculoRodoviario // Define um automovel. { enum tipo tipocarro; public: Automovel() { } Automovel(tipo t, int r, int p) : VeiculoRodoviario(r, p) { tipocarro = t; } void settipo(tipo t) { tipocarro = t; } enum tipo gettipo() { return tipocarro; } void mostrar() { cout << "rodas: " << getrodas() << "\n"; cout << "passageiros: " << getpassageiros() << "\n"; cout << "tipo: "; switch(gettipo()) { case van: cout << "van\n"; break; case car: cout << "carro\n"; break; case vagao: cout << "vagao\n"; }; } }

Exemplo: veículos rodoviários (3) int main() { Caminhao t1, t2(6, 4, 2000); Automovel c; t1.setrodas(18); t1.setpassageiros(2); t1.setcarga(3200); t1.mostrar(); cout << "\n"; t2.mostrar(); cout << "\n"; c.setrodas(4); c.setpassageiros(6); c.settipo(van); c.mostrar(); return 0; }

Finalizando

Revisão Uma classe derivada herda membros (métodos e atributos) da classe base Exemplo: class classe_derivada : public classe_base { //corpo da classe derivada }; Uma classe derivada pode acessar os membros não private de sua classe-base Todo acesso a membros privados deve ser feito por métodos públicos

Sugestões Finais Resolvam a lista de exercícios da aula (disponível no ambiente EAD) Só se aprende a programar, programando Dúvidas sobre os exercícios podem ser enviadas por email

Referências Bibliográficas Paul Deitel e Harvey Deitel, C: como programar, 6a edição, Ed. Prentice Hall Brasil, 2011. Paul Deitel e Harvey Deitel, C++: como programar, 5a edição, Ed. Prentice Hall Brasil, 2006. Antonio Filho, Introdução à Programação Orientada a Objetos com C++, 1a edição, Ed. Campus, 2010.