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

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

Centro Integrado de Tecnologia da Informação

Apresentações semelhantes


Apresentação em tema: "Centro Integrado de Tecnologia da Informação"— Transcrição da apresentação:

1 Centro Integrado de Tecnologia da Informação
Curso de C/C++ Aula 7 Allan Lima

2 Sob as seguintes condições:
Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes condições: Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. Veja aqui a licença completa

3 Roteiro O ponteiro this Membros estáticos Overload de operadores
Friends Herança

4 O ponteiro this É um atributo que método possui
Ele é um ponteiro para o objeto no qual um membro esta sendo executado. No código escrevemos: void Ponto::setX(float newX) { this->x = newX; }

5 O ponteiro this Mas assinatura real é: E quando chamamos o método:
void setX(Ponto *this, float newX) { this->x = newX; } E quando chamamos o método: p.setX(10); Na verdade estamos fazendo: setX(&p, 10); Isso significa que todo método é um função

6 Membros Estáticos São membros que possuem apenas uma cópia compartilhada por todos os objetos de um tipo Podem ser métodos ou atributos: Atributos estáticos devem ser definidos dentro da própria classe e inicializados fora dela Métodos estáticos só podem fazer referência a atributos estáticos.

7 Exemplo exemploStatic.cpp

8 Overload de Operadores
C++ permite a aplicação de alguns operadores aos tipos que nós criamos Alguns operadores como o “=” são criados automaticamente Porém outros devem ser implementados pelo programador Sintaxe: tipo operator símbolo(parâmetros);

9 Exemplo exemploOperador.cpp

10 Overload de Operadores
C++ permite a sobrecarga dos seguintes operadores: Unários: + - * ! ~ & ++ -- () -> ->* new delete Binários: / % | ^ << >> = += -= /= %= &= |= ^= <<= >>= = = != < > <= >= && || [] ,

11 Exercícios Crie uma classe Ponto similar a da aula anterior e implemente os seguintes operadores: == != + -

12 Friends Permitem a quebra dos níveis de acesso pelas palavras reservadas private e protected Podemos ter funções, métodos ou classes friends As declarações são feitas através da palavra reservada friend Toda classe é friend dela mesma Exemplo: exemploFriend.cpp

13 E os métodos também precisamos repetir?
Herança class Empregado { string nome; float salario; int numDepartamento; int ramal; //... }; class Gerente { string nome; float salario; int numDepartamento; int ramal; Empregado *grupo; //... }; Precisamos mesmo repetir todos os atributos da classe Empregado na classe Gerente? E os métodos também precisamos repetir?

14 Herança É um mecanismo utilizado para permitir o reuso de código
Quando uma classe B herda de uma outra classe A dizemos que B é uma sub-classe de A Em C++ todos os membros public e protected da classe base são herdados Construtores, Destrutores, o operador = e os friends não são herdados

15 Herança Sintaxe class nomeDaClasse : tipoDaHeranca classeBase
public – Os membros public e protected da classe base são por default public e protected respectivamente private – Os membros public e protected da classe base são por default private protected – Os membros public e protected da classe por default são protected Se tipoDaHeranca não for especificado, private é assumido para as classes e public para as estruturas

16 Herança Apesar dos construtores e destrutores não serem herdados, quando criamos um objeto ele chama o construtor padrão de sua classe base e também o destrutor padrão quando ele está prestes a ser desalocado da memória Também podemos re-utilizar o código do construtor da classe base: construtorClasse(parametros) : construtorDaSuperClasse(parametros) { ... }

17 Dizemos que Gerente herda de Empregado
Herança A solução: class Empregado { string nome; float salario; int numDepartamento; int ramal; // ... }; class Gerente : public Empregado { Empregado *grupo; //.. Dizemos que Gerente herda de Empregado

18 Ponteiros e Herança Podemos criar ponteiros para classes
A inicialização é feita através do operador new ou do & Quando usarmos o new também temos que usar o delete para liberar memória Restrições: Um ponteiro para uma classe base só pode chamar métodos desta Mas podemos usar casts para ter acesso aos demais métodos

19 Exemplo exemploHeranca.cpp

20 Herança Múltipla C++ permite que uma classe herde de várias outras
Sintaxe: class nomeDaClasse : tipoHeranca classeBase1, // ... tipoHeranca classeBaseN Mas isso traz problemas: A e B possuem o método m C herda de A e de B O que acontece quando chamamos m de C?

21 Exemplo exemploHerancaMultipla.cpp

22 Exercícios 2)Implemente a seguinte hierarquia de classes: Temporario
Empregado Secretaria SecretariaTemp Gerente Consultor

23 Classe Empregado Atributos: Métodos Nome E-mail Celular Salário
Departamento Métodos gets e sets Construtor com os seu atributos

24 Classe Gerente Atributos Métodos Os empregados que gerencia
O número empregados que gerencia Métodos Gets e sets Construtor com os seus atributos

25 Classe Secretaria Atributos Métodos O empregado do qual é secretaria
Gets e sets Construtor com os seus atributos

26 Classe Temporario Atributos Métodos A data de início do contrato
O número de meses do contrato Métodos Gets e Sets Construtor com os seus atributos

27 SecretariaTemporaria
Métodos: Construtor com os seu atributos

28 Consultor Atributos: Métodos Área de consultoria Get e sets
Construtor com os seus atributos

29 Referências Stroustrup, Bjarne. The C++ Programming Language, Special Edition. Eckel, Bruce. Thinking in C++, 2nd ed. Volume 1. Slides de Gustavo curso de C/C++

30 Agradecimentos Gustavo Henrique Porto
Pelo material cedido para montagem da aula


Carregar ppt "Centro Integrado de Tecnologia da Informação"

Apresentações semelhantes


Anúncios Google