Orientação a Objetos. Programação em C++
|
|
|
- Betty Viveiros Sabala
- 8 Há anos
- Visualizações:
Transcrição
1 OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 11: Herança et al. (Funções Virtuais, Polimorfismo, Herança Múltipla, Funções Virtuais Puras e Classes Abstratas.) Prof. Jean Marcelo SIMÃO
2 Exercício 1 - Criar uma lista no sistema com todas as pessoas criadas independentemente de suas especializações (Professor, Aluno). - Na classe Professor criar um atributo Salario e um método InformaProventos. - Criar uma classe Estagiario derivado de Aluno, com um atributo BolsaEstudo e um método InformaProventos.
3 Exercício 1 - Criar uma lista no sistema com todas as pessoas criadas independentemente de suas especializações (Professor, Aluno). - Na classe Professor criar um atributo Salario e um método InformaProventos. - Criar uma classe Estagiario derivado de Aluno, com um atributo BolsaEstudo e um método InformaProventos.
4 #ifndef _PRINCIPAL_H_ #define _PRINCIPAL_H_ #include "Lista.h" #include "Professor.h" #include "Universidade.h" #include "Departamento.h" #include "Disciplina.h" #include "Aluno.h" class Principal private: int cont_iddisc; int cont_iddepart; int cont_idaluno; Universidade UTFPR; Universidade Princeton; Universidade Cambridge; Departamento EletronicaUTFPR; Departamento MatematicaUTFPR; Departamento FisicaUTFPR; Departamento MatematicaPrinceton; Departamento FisicaPrinceton; Departamento MatematicaCambridge; Departamento FisicaCambridge; Professor Professor Professor Disciplina Disciplina Disciplina Disciplina Aluno Aluno Aluno Aluno Aluno Simao; Einstein; Newton; Computacao1_2006; Introd_Alg_2007; Computacao2_2007; Metodos2_2007; AAA; BBB; CCC; DDD; EEE; int int int Lista <Universidade> Lista <Departamento> Lista <Disciplina> Lista <Aluno> Lista <Pessoa> Principal ( ); void Inicializa(); void InicializaUnivesidades(); void InicializaDepartamentos(); void InicializaProfessores(); void InicializaAlunos(); void InicializaDisciplinas(); void Executar(); void CalcIdadeProfs(); void UnivOndeProfsTrabalham(); void DepOndeProfsTrabalham(); void ListeDiscDeptos ( ); void ListeAlunosDisc(); void CadDisciplina(); void CadDepartamento(); void CadUniversidade(); void CadAluno(); void GravarTudo(); void GravarUniversidades(); void GravarDepartamentos(); void GravarDisciplinas(); void GravarAlunos(); void GravarProfessores(); void MenuCad(); void MenuExe(); void Menu(); ; #endif diaatual; mesatual; anoatual; LUniversidades; LDepartamentos; LDisciplinas; LAlunos; LPessoas;
5 void Principal::InicializaAlunos() Pessoa* ponteiropessoa = NULL; Aluno* ponteiroaluno = NULL; AAA.setNome ("AAA"); LAlunos. incluainfo (&AAA, AAA.getNome()); ponteiroaluno = &AAA; // ponteiropessoa = ( Pessoa * ) ( ponteiroaluno ); ponteiropessoa = static_cast < Pessoa * > ( ponteiroaluno ); LPessoas.incluaInfo ( ponteiropessoa, ponteiropessoa->getnome() ); BBB.setNome("BBB"); LAlunos. incluainfo (&BBB, BBB.getNome()); ponteiroaluno = &BBB; ponteiropessoa = static_cast<pessoa*>(ponteiroaluno); LPessoas. incluainfo (ponteiropessoa, ponteiropessoa->getnome()); CCC.setNome("CCC"); LAlunos. incluainfo (&CCC, CCC.getNome()); ponteiroaluno = &CCC; ponteiropessoa = static_cast<pessoa*>(ponteiroaluno); LPessoas. incluainfo (ponteiropessoa, ponteiropessoa->getnome()); DDD.setNome("DDD"); LAlunos. incluainfo (&DDD, DDD.getNome()); ponteiroaluno = &DDD; ponteiropessoa = static_cast<pessoa*>(ponteiroaluno); LPessoas. incluainfo (ponteiropessoa, ponteiropessoa->getnome()); EEE.setNome("EEE"); LAlunos. incluainfo (&EEE, EEE.getNome()); ponteiroaluno = &EEE; ponteiropessoa = static_cast<pessoa*>(ponteiroaluno); LPessoas. incluainfo (ponteiropessoa, ponteiropessoa->getnome());
6 void Principal::InicializaProfessores ( ) Pessoa* ponteiropessoa; Professor* ponteiroprofessor; // Inicialização do(s) ojeto(s) da classe Professor Simao.Inicializa ( 3, 10, 1976, "Jean Simão" ); Einstein.Inicializa ( 14, 3, 1879, "Albert Einstein" ); Newton.Inicializa ( 4, 1, 1643, "Isaac Newton" ); // "Filiação" ao departamento. Simao.setDepartamento ( &EletronicaUTFPR ); Einstein.setDepartamento ( &FisicaPrinceton ); Newton.setDepartamento ( &MatematicaCambridge ); ponteiroprofessor = &Simao; ponteiropessoa = static_cast<pessoa*>(ponteiroprofessor); LPessoas.incluaInfo (ponteiropessoa, ponteiropessoa->getnome()); ponteiroprofessor = &Einstein; ponteiropessoa = static_cast<pessoa*>(ponteiroprofessor); LPessoas.incluaInfo (ponteiropessoa, ponteiropessoa->getnome()); ponteiroprofessor = &Newton; ponteiropessoa = static_cast<pessoa*>(ponteiroprofessor); LPessoas.incluaInfo (ponteiropessoa, ponteiropessoa->getnome());
7 void Principal::MenuExe() int op = -1; while ( op!= 7 ) system ("cls"); cout << " Informe sua opção: " << endl; cout << " 1 - Listar Disciplinas. " << endl; cout << " 2 - Listar Departamentos. cout << " 3 - Listar Universidade. " << endl; cout << " 4 - Listar Alunos. cout << " 5 - Listar Professores. " << endl; cout << " 6 - Listar Pessoas. cout << " 7 Sair. " << endl; cin >> op; " << endl; " << endl; " << endl; switch ( op ) case 1: Disciplinas.listeInfos(); system ("Pause"); break; case 2: LDepartamentos.listeInfos(); system ("Pause"); break; case 3: LUniversidades.listeInfos(); system ("Pause"); break; case 4: LAlunos.listeInfos(); system ("Pause"); break; case 5: DepOndeProfsTrabalham(); system ("Pause"); break; case 6: LPessoas.listeInfos(); system ("Pause"); break; case 7: cout << " FIM " << endl; break; default: cout << " Opção Inválida - Pressione uma tecla. " << endl; getchar();
8
9 void Principal::MenuExe() int op = -1; while ( op!= 7 ) system ("cls"); cout << " Informe sua opção: " << endl; cout << " 1 - Listar Disciplinas. " << endl; cout << " 2 - Listar Departamentos. cout << " 3 - Listar Universidade. " << endl; cout << " 4 - Listar Alunos. cout << " 5 - Listar Professores. " << endl; cout << " 6 - Listar Pessoas. cout << " 7 Sair. " << endl; cin >> op; " << endl; " << endl; " << endl; Obs. a parte: o comando system nos permite introduzir o princípio de API, por não deixar de ser uma (mesmo que simplificadamente). API (Application Programming Interface) permite ao programa acessar uma outra aplicação via uma interface. Neste caso, o system é a interface que permite acessar comandos do DOS. switch ( op ) case 1: Disciplinas.listeInfos(); system ("Pause"); break; case 2: LDepartamentos.listeInfos(); system ("Pause"); break; case 3: LUniversidades.listeInfos(); system ("Pause"); break; case 4: LAlunos.listeInfos(); system ("Pause"); break; case 5: DepOndeProfsTrabalham(); system ("Pause"); break; case 6: LPessoas.listeInfos(); system ("Pause"); break; case 7: cout << " FIM " << endl; break; default: cout << " Opção Inválida - Pressione uma tecla. " << endl; getchar();
10 void Principal::CadAluno() char nomealuno [150]; int ra; Aluno* ponteiroaluno; Pessoa* ponteiropessoa; cout << "Qual o nome do aluno. " << endl; cin >> nomealuno; cout << "Qual o RA do aluno." cin >> ra; << endl; ponteiroaluno = new Aluno ( cont_idaluno++ ); ponteiroaluno->setnome ( nomealuno ); ponteiroaluno->setra ( ra ); LAlunos.incluaInfo (ponteiroaluno, ponteiroaluno->getnome()); // Logo abaixo a forma moderna de fazer cast ponteiropessoa = static_cast < Pessoa* > ( ponteiroaluno ); // Logo abaixo a forma antiga e desaconselhavel de fazer cast // ponteiropessoa = ( Pessoa* ) ponteiroaluno; LPessoas.incluaInfo ( ponteiropessoa, ponteiropessoa->getnome() );
11 Exercício 1 - Criar uma lista no sistema com todas as pessoas criadas independentemente de suas especializações (Professor, Aluno). - Na classe Professor criar um atributo Salario e um método InformaProventos. - Criar uma classe Estagiario derivado de Aluno, com um atributo BolsaEstudo e um método InformaProventos.
12 #ifndef _PROFESSOR_H_ #define _PROFESSOR_H_ #include "Pessoa.h" #include "Conhecimento.h" #include "Universidade.h class Professor : public Pessoa private: Universidade* punivfiliado; Departamento* pdptofiliado; float salario; float bolsa_projeto; ; Professor(int diana, int mesna, int anona, char* nome = ""); Professor(); ~Professor(); void inicializa(); void setunivfiliado(universidade* pu); void setdepartamento(departamento* pdep); void OndeTrabalho(); void QualDepartamentoTrabalho(); void setsalario ( float s ); float getsalario (); void setbolsasalario( float s ); float getbolsasalario (); void informaproventos(); #endif #include stdafx.h #include "Professor.h" Professor::Professor(int diana, int mesna, int anona, char* nome"): Pessoa(diaNa, mesna, anona, nome) inicializa(); Professor::Professor(): Pessoa() inicializa(); void Professor::inicializa() salario = 0; bolsa_projeto = 0; // void Professor::setSalario (float s) salario = s; float Professor::getSalario ( ) return salario; void Professor::informaProventos ( ) cout << "O valor da salário do Prof. " << nomep << " é " << (salario+bolsa_projeto) << endl;
13 void Principal::InicializaProfessores ( ) Pessoa* ponteiropessoa; Professor* ponteiroprofessor; Simao.Inicializa ( 3, 10, 1976, "Jean Simão" ); Einstein.Inicializa ( 14, 3, 1879, "Albert Einstein" ); Newton.Inicializa ( 4, 1, 1643, "Isaac Newton" ); Simao.setBolsaProjeto (1000); Simao.setSalario (4000); Einstein.setSalario (25000); Newton.setSalario (25000); Simao.setUnivFiliado ( &UTFPR ); Einstein.setUnivFiliado ( &Princeton ); Newton.setUnivFiliado ( &Cambridge ); Simao.setDepartamento ( &EletronicaUTFPR ); Einstein.setDepartamento ( &FisicaPrinceton ); Newton.setDepartamento ( &MatematicaCambridge ); ponteiroprofessor = &Simao; ponteiropessoa = static_cast<pessoa*>(ponteiroprofessor); LPessoas.incluaInfo (ponteiropessoa, ponteiropessoa-> getnome()); ponteiroprofessor = &Einstein; ponteiropessoa = static_cast<pessoa*>(ponteiroprofessor); LPessoas.incluaInfo (ponteiropessoa, ponteiropessoa->getnome()); ponteiroprofessor = &Newton; ponteiropessoa = static_cast<pessoa*>(ponteiroprofessor); LPessoas.incluaInfo(ponteiroPessoa, ponteiropessoa->getnome());
14 Exercício 1 - Criar uma lista no sistema com todas as pessoas criadas independentemente de suas especializações (Professor, Aluno). - Na classe Professor criar um atributo Salario e um método InformaProventos. - Criar uma classe Estagiario derivado de Aluno, com um atributo BolsaEstudo e um método InformaProventos.
15 #ifndef _ESTAGIARIO_H_ #define _ESTAGIARIO_H_ #include "Aluno.h class Estagiario : public Aluno protected: float BolsaEstudo; Estagiario (int diana, int mesna, int anona, char* nome = ""); Estagiario(); ~Estagiario(); void inicializa(); void setbolsaestudo(float b); float getbolsaestudo(); void informaproventos(); ; #endif #include "stdafx.h" #include "Estagiario.h" Estagiario::Estagiario (int diana, int mesna, int anona, char* nome): Aluno (diana, mesna, anona, nome) inicializa(); Estagiario::Estagiario() : Aluno() inicializa(); Estagiario::~Estagiario() void Estagiario::inicializa() BolsaEstudo = 0; void Estagiario::setBolsaEstudo (float b) BolsaEstudo = b; float Estagiario::getBolsaEstudo() return BolsaEstudo; void Estagiario::informaProventos() cout << "O valor da bolsa de " << nomep << " é " << BolsaEstudo << ". << endl;
16 #ifndef _PRINCIPAL_H_ #define _PRINCIPAL_H_ #include "Lista.h" #include "Professor.h" #include "Universidade.h" #include "Departamento.h" #include "Disciplina.h" #include "Aluno.h" #include "Estagiario.h" class Principal private: Aluno Aluno Aluno Aluno Aluno Estagiario Estagiario lista <Pessoa> AAA; BBB; CCC; DDD; EEE; Fulano; Ciclano; LPessoas; Principal ( ); void InicializaEstagiarios (); void Executar (); ; #endif
17 void Principal::InicializaEstagiarios ( ) Pessoa* ponteiropessoa; Aluno* ponteiroaluno; Estagiario* ponteiroestagiario; // ************************************ Fulano.setNome ("Fulano"); Fulano.setBolsaEstudo (800); ponteiroestagiario = &Fulano; ponteiroaluno = static_cast<aluno*>(ponteiroestagiario); LAlunos.incluaInfo ( ponteiroaluno, ponteiroaluno->getnome( ) ); ponteiropessoa = static_cast<pessoa*>(ponteiroaluno); LPessoas.incluaInfo ( ponteiropessoa, ponteiropessoa->getnome( ) ); // ************************************ Ciclano.setNome ("Ciclano"); Ciclano.setBolsaEstudo (801); ponteiroestagiario = &Ciclano; ponteiroaluno = static_cast<aluno*>(ponteiroestagiario); LAlunos.incluaInfo ( ponteiroaluno, ponteiroaluno->getnome( ) ); ponteiropessoa = static_cast<pessoa*>(ponteiroaluno); LPessoas.incluaInfo ( ponteiropessoa, ponteiropessoa->getnome( ) );
18 Métodos ou funções virtuais.
19 Métodos ou funções virtuais. #ifndef _PESSOA_H_ #define _PESSOA_H_ class Pessoa protected: int diap; int mesp; int anop; int idadep; char nomep[30]; Pessoa ( int diana, int mesna, int anona, char* nome = "" ); Pessoa ( ) ; void Inicializa (int diana, int mesna, int anona, char* nome = ""); void Calc_Idade ( int diaat, int mesat, int anoat ); void Calc_Idade ( int anoat); int informaidade ( ); Qualquer método pode ser redefinido em uma classe derivada. Por exemplo, informaidade() poderia ser redefinida na classe Professor. Assim um objeto Professor usaria a função informaidade() definida na sua classe. Entretanto, se ele fosse convertido (cast) para Pessoa, ele utilizaria a função informaidade() definida na sua superclasse. Já no caso de uma função virtual, mesmo que o objeto seja convertido para sua superclasse, ele continuará utilizando a função de sua classe! void setnome ( char* n ); char* getnome ( ); virtual void informaproventos(); ; #endif void Pessoa::informaProventos() cout << "Nenhuma informação sobre proventos de << nomep << "." << endl;
20 #ifndef _ALUNO_H_ #define _ ALUNO _H_ #include "Pessoa.h" class Aluno : public Pessoa ; #endif #ifndef _PESSOA_H_ #define _PESSOA_H_ class Pessoa protected: virtual void informaproventos(); ; #endif #ifndef _PROFESSOR_H_ #define _PROFESSOR_H_ #include "Pessoa.h" #include "Universidade.h«class Professor : public Pessoa void informaproventos(); ; #endif #ifndef _ESTAGIARIO_H_ #define _ESTAGIARIO_H_ #include "Aluno.h" class Estagiario : public Aluno void informaproventos(); ; #endif
21 Ligação Dinâmica Exemplo de uso de função virtual. void Principal::ListeProventosPessoas() Elemento <Pessoa>* ponteiroelementopessoa; Pessoa* ponteiropessoa; ponteiroelementopessoa = LPessoas.getPrimeiro(); while ( ponteiroelementopessoa!= NULL ) ponteiropessoa = ponteiroelementopessoa->getinfo(); ponteiropessoa->informaproventos(); ponteiroelementopessoa = ponteiroelementopessoa->getproximo();
22
23 Polimorfismo Métodos (funções-membro) polimórficas: Dois métodos em classes diferentes com mesma assinatura (forma) mas com implementações diferentes, sendo estas classes derivadas de uma mesma classe base e estes métodos implementações de um método virtual definido nesta. #ifndef _ALUNO_H_ #define _ ALUNO _H_ #include "Pessoa.h" class Aluno : public Pessoa ; #endif #ifndef _PESSOA_H_ #define _PESSOA_H_ class Pessoa protected: virtual void informaproventos(); ; #endif #ifndef _PROFESSOR_H_ #define _PROFESSOR_H_ #include "Pessoa.h" #include "Universidade.h«class Professor : public Pessoa void informaproventos(); ; #endif #ifndef _ESTAGIARIO_H_ #define _ESTAGIARIO_H_ #include "Aluno.h" class Estagiario : public Aluno void informaproventos(); ; #endif
24 Sobrecarga de métodos #ifndef _PESSOA_H_ #define _PESSOA_H_ class Pessoa protected: int diap; int mesp; int anop; int idadep; char nomep[30]; Pessoa(int diana, int mesna, int anona, char* nome = " "); Pessoa(); ~Pessoa(); // Sobrecarga de função NÃO é polimorfismo! void Calc_Idade(int diaat, int mesat, int anoat); void Calc_Idade(int anoat); int informaidade(); virtual void informaproventos(); ; #endif ATENÇÃO: Re-estudar sobrecarga de operadores! Pessoa::Pessoa(int diana, int mesna, int anona, char* nome) Inicializa(diaNa, mesna, anona, nome); Pessoa::Pessoa() void Pessoa::Calc_Idade(int diaat, int mesat, int anoat) idadep = anoat - anop; if ( mesp > mesat ) idadep = idadep - 1; else if ( mesp == mesat ) if ( diap > diaat ) idadep = idadep - 1; printf("\n A idade da Pessoa %s é %d \n", nomep, idadep); void Pessoa::Calc_Idade(int anoat) idadep = anoat - anop; printf("\n A idade da Pessoa %s é %d \n", nomep, idadep);
25 Herança Múltipla Uma classe pode herdar o conteúdo de mais de uma classe.
26 Exemplo #ifndef _LIVRO_H_ #define _LIVRO_H_ #include "Conhecimento.h" class Livro : public Conhecimento private: protected: char nome[150]; ; Livro ( int i = 0 ); ~Livro(); void setnome(char* n); char* getnome(); #endif #ifndef _CONHECIMENTO_H_ #define _CONHECIMENTO_H_ class Conhecimento private: protected: int id; char domino[150]; Conhecimento ( int i = 0 ); ~Conhecimento ( ); char* getdominio ( ); void setdominio ( char* d ); ; #endif #ifndef _PROFESSOR_H_ #define _PROFESSOR_H_ #include "Pessoa.h" #include "Universidade.h" #include "Conhecimento.h" class Professor : public Pessoa, public Conhecimento private: Universidade* UnivFiliado; Departamento* DptoFiliado; Professor ( int diana, int mesna, int anona, char* nome = "" ); Professor ( int i = 0 ); ~Professor(); void setunivfiliado(universidade* u); void setdepartamento(departamento* dep); void OndeTrabalho(); void QualDepartamentoTrabalho(); ; #endif
27 void Principal::InicializaProfessores() Pessoa* ponteiropessoa; Professor* ponteiroprofessor; Simao.Inicializa ( 3, 10, 1976, "Jean Simão" ); Einstein.Inicializa ( 14, 3, 1879, "Albert Einstein" ); Newton.Inicializa ( 4, 1, 1643, "Isaac Newton" ); void Principal::ConhecPessoa() // Conhecimento da Pessoa Simao.MeuConhecimento(); Einstein.MeuConhecimento(); Newton.MeuConhecimento(); printf("\n"); Simao.setBolsaProjeto (1000); Simao.setSalario (4000); Einstein.setSalario (25000); Newton.setSalario (25000); Simao.setUnivFiliado ( &UTFPR ); Einstein.setUnivFiliado ( &Princeton ); Newton.setUnivFiliado ( &Cambridge ); // Area de Conhecimento. Simao.setDominio("Computação"); Einstein.setDominio("Física"); Newton.setDominio("Matemática-Física");
28 Classe Abstrata Uma classe abstrata não pode ser intanciada (i.e. não se cria objetos a partir dela), mas pode ser derivada. Define-se uma classe abstrata por meio de pelo menos uma função virtual pura! #ifndef _CONHECIMENTO_H_ #define _CONHECIMENTO_H_ class Conhecimento private: protected: int id; char domino[150]; Conhecimento ( int i = 0 ); ~Conhecimento(); char* getdominio(); void setdominio(char* d); ; #endif virtual void informaantiguidade ( ) = 0; Uma função virtual pura não é implementável na classe em questão e deve obrigatoriamente ser implementada nas classes derivadas! #include "Conhecimento.h" #include "stdio.h" Conhecimento::Conhecimento ( int i = 0 ) id = i; Conhecimento::~Conhecimento() void Conhecimento::setDominio(char* d) strcpy(domino, d); char* Conhecimento::getDominio() return domino;
29 #ifndef _LIVRO_H_ #define _LIVRO_H_ #include "Conhecimento.h" class Livro : public Conhecimento private: protected: char nome[150]; int ano_impressao; Livro ( int i = 0, int ano_imp = 0 ) ; ~Livro(); ; void setnome ( char* n ); char* getnome ( ); #endif void informaantiguidade ( ); void Livro:: informaantiguidade ( ) cout << ano_impressao << endl; #ifndef _PROFESSOR_H_ #define _PROFESSOR_H_ #include "Pessoa.h" #include "Conhecimento.h" #include "Universidade.h" class Professor : public Pessoa, public Conhecimento private: Universidade* UnivFiliado; Departamento* DptoFiliado; float salario; Professor ( int diana, int mesna, int anona, char* nome = ""); Professor ( int i = 0 ); ~Professor(); void inicializa(); void setunivfiliado (Universidade* u); void setdepartamento(departamento* dep); void OndeTrabalho(); void QualDepartamentoTrabalho(); void MeuConhecimento(); void setsalario(float s); float getsalario(); void informaproventos(); void informaantiguidade ( ); ; #endif void Professor:: informaantiguidade ( ) cout << idade << endl;
30 Itens para estudar: Sobrecarga de operadores. Espaço de nomes (namespace). Classes Aninhadas. Classe Pré-definida String. Objetos Constantes (const). Atributos e métodos estáticos (static).
Encapsulamento. Alberto Costa Neto DComp - UFS
Encapsulamento Alberto Costa Neto DComp - UFS 1 Motivação O que aprendemos até agora? O que diferencia a POO da Programação Imperativa? Estas informações são suficientes para construir um projeto OO eficiente?
Orientação a Objetos - Programação em C++
OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 9: Programação ou Implementação: uma fase da engenharia de software. Projeto (UML) e Programação (C++,...) Prof. Dr. Jean Marcelo
Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas
Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany [email protected] ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include
Laboratório de programação II
Laboratório de programação II Herança e Polimorfismo Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando
PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo
PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 6: Polimorfismo Escola Politécnica da Universidade de São Paulo Conceito de polimorfismo 2 Polimorfismo A palavra vem
Programação em C/C++
OO Engenharia Eletrônica - Programação em C/C++ Slides 20: TCP/IP em Winsocks 2. API do Windows para programar aplicativos que utilizam o protocolo TCP/IP. Prof. Jean Marcelo SIMÃO TCP/IP em Winsocks 2
ESTRUTURA COM DECISÃO COMPOSTA
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO COMPOSTA Prof. Dr. Daniel Caetano 2018-1 Objetivos Entender o que são decisões compostas Compreender como implementar decisões compostas Capacitar
Herança. BCC702-Programação de Computadores II Emiliana Mara Lopes Simões Universidade Federal de Ouro Preto abril 2010
Herança BCC702-Programação de Computadores II Emiliana Mara Lopes Simões [email protected] Universidade Federal de Ouro Preto abril 2010 Herança Uma característica importante da programação orientada
Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.
Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);
Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Interfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java
Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão
CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO
REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração
Análise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
Programação Aplicada à Engenharia
Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Programação Aplicada à Engenharia Aula 07: Aritmética e Tomada de decisão Silvio Fernandes 2009.1 1 Operadores Aritméticos Operadores
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática Prof. Leinylson Fontinele Pereira Na aula anterior... Ponteiros Funções Introdução 3 O que vamos aprender? Preparação do ambiente de testes Conceitos
Aula 05: Condicionais (Parte 2)
Aula 05: Condicionais (Parte 2) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula Anterior Breve Revisão Comandos de Decisão
Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Fundamentos de Programação1
Fundamentos de Programação1 Linguagem C Introdução e elementos principais Aula N. 01 Prof. SIMÃO Jean Marcelo SIMÃO 1 Exemplo 2 % código em Octave/Matlab clc; A = 5; A = 4 ; if ( A > B ) printf ( A é maior
Programação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected]
Palavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Computação Informática
Computação Informática Linguagem C Matrizes em C Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO 1 Estrutura de Dados Homogênea matrizes Uma matriz computacional é um váriável composta capaz de armazenar uma
C++ - Funções Virtuais (Polimorfismo) Base. Deriv0 Deriv1 Deriv2. print( ) print( ) print( ) dv0 dv1 dv2. p[0] = &dv0; p[1] = &dv1; p[2] = &dv2;
C++ - Funções Virtuais (Polimorfismo) Polimorfismo : (assumir várias formas) Em C++ indica a habilidade de uma única instrução chamar diferentes funções e portanto assumir formas diferentes. Veja isto
Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.
Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java
PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015
PCS - 3111 Laboratório de Programação Orientada a Objetos 1a. Prova 02 de Setembro de 2015 Questão 1 (2,6) Deseja-se implementar um programa que recebe um mês e um dia atual de um ano e o mês e o dia de
Programação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2 Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante Memória do computador
C com introdução a OO
... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro
//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void
//conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();
Linguagem de Programação C++
Exercício: Linguagem de Programação C++ Construa o diagrama de classes UML para as classes envolvidas na solução do exercício do slide 253. 267 Sobrecarga Linguagem de Programação C++ Neste exercício vimos
Fundamentos de Programação
Fundamentos de Programação ET43G Aula 7 Prof. Daniel Cavalcanti Jeronymo Orientada a Objetos Polimorfismo. Polimorfismo estático e dinâmico. Métodos virtuais, interfaces. Universidade Tecnológica Federal
Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.
Engenharia informatica Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função. #include Int e_caracter (char c) { Return(
5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.
3636363636363636363636363636363636363636363636363636 5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios. 5.1 - Comandos
Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Programação em C Características Criado na década de 70; Possui muitas regras em sintaxe e semântica; Utilizado para programação de
Linguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Herança e Polimorfismo
Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais
Notas de Aula 04: Herança e polimorfismo.
Notas de Aula 04: Herança e polimorfismo. Objetivos da aula: Introduzir o conceito de Heranças Criar uma hierarquia de classes Rever o uso de modificadores de acesso. Apresentar o conceito de polimorfismo
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Programação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1. Torna o atributo visível a todas as classes do pacote onde foi declarado: a) public b) private c) protected d) package
Linguagem Java - Introdução
Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean
Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno [email protected] Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus
Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo
PARTE II: Java e OO Interface Herança Herança e polimorfismo Classes e métodos abstratos : muitas formas de implementação de uma operação Permite esconder diferentes implementações atrás da mesma interface
Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for
Programação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse
Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Linguagem C++ Estruturas de controle Parte II Estruturas de repetição
Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um
INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita
Programação Orientada a Objetos
Programação Orientada a Objetos Faculdade de Computação Aula Revisão Marcelo Zanchetta do Nascimento Material elaborado pela Profa. Ana Carolina Lorena - UNIFESP Desenvolvimento de Software ANÁLISE IMPLEMENTAÇÃO
Conceito de classe em C++
Introdução à Programação com Classes em C++ João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog2-2006/2007 Conceito de classe em
Fundamentos de Programação 2
Fundamentos de Programação 2 ET43G. Polimorfismo. Classes abstratas e interfaces. Aula 12 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia Eletrônica 3º Período
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Módulo 5. Instruções if e switch. Algoritmos e Estruturas de Dados I C++ (Rone Ilídio)
Módulo 5 Instruções if e switch Algoritmos e Estruturas de Dados I C++ (Rone Ilídio) Comando de decisão if Executa uma determinada seqüência de comandos se sua condição for verdadeira Sintaxe if (condição)
Classe Abstrata e Interface
Orientação a objetos com Java Classe Abstrata e Interface Byron Leite [email protected] 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public
Introdução à Programação. Conceitos Básicos de Orientação a Objetos
Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes
Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):
Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded
Programação Orientada a Objetos Classes Abstratas. Sérgio Soares
Programação Orientada a Objetos Classes Abstratas Sérgio Soares [email protected] Até aqui Quando usar herança? Ao redefinir um método manter o comportamento herdado! 2 Adivinhem... Surge um novo requisito
Linguagem de Programação III
Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de
