Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

18
Aula Prática 13 Orientação a Objeto Monitoria 2010.2

Transcript of Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Page 1: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Aula Prática 13

Orientação a Objeto

Monitoria 2010.2

Page 2: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Orientação a Objeto O que é?

Paradigma de programação que se baseia na premissa de que todos os componentes de um programa podem ser tratados como “objetos”

Cada objeto possui determinadas características e comportamentos específicos (atributos e métodos)

Page 3: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Por que usar OO?Orientação à Objeto é mais: Flexível Extensível Reusável Organizada Intuitiva

Page 4: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Objetos

Tudo são objetos!Um programa é um conjunto de objetos

interagindo e modificando seus estados através de métodos.

Ex.:Objeto: DVD

Método 1: PlayMétodo 2: PauseMétodo 3: VoltarMétodo 4: Avançar

Page 5: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

ObjetosMétodos são como funções que atuam

sobre os atributos de um objeto, modificando-os.

Atributos são informações sobre um determinado objeto que mudam de acordo com uma ação executada (método).

Avançar(10 s)

1:10:32 1:10:42

Tempo sendo modificado

Page 6: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

C++

Objetivo:○ Combinar o desempenho de C com as facilidades

de linguagens de alto nível.○ Oferecer uma melhor organização no

desenvolvimento de projetos complexos.○ Combinar paradigmas de programação para

aumentar a liberdade do desenvolvedor.Ou seja:

○ Em grosso modo, C++ possui o desempenho de C (imperativa) combinado com as facilidades de JAVA (orientada a objeto)

Page 7: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Classes• Uma classe representa um tipo de objeto• Agrupa objetos com características em comum• Assim como C possui structs, C++ possui classes

Page 8: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Classes• As classes possuem:

• Atributos• Métodos

• Que podem ser:• Privados (Só são acessados por métodos da classe)• Públicos (Podem ser manipulados diretamente)

Page 9: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

ClassesEm C++ os métodos são definidos na classe, porém são efetivamente implementados fora dela:

No caso do método “Conta” (que é um construtor), não seria necessário definí-lo ou implementá-lo. C++ por padrão cria

um construtor sem parâmetros.

MAS O QUE É UM CONSTRUTOR??

O apontador this utilizado nesse construtor simplesmente guarda uma

referência para o objeto que está sendo criado. Seu uso só é necessário quando existe uma variável local com o mesmo

nome de um atributo da classe.

Page 10: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Construtor• É um método especial que toda classe possui.• Pode ser utilizado para criar um objeto de duas formas:

• Dinamicamente:• É utilizado junto com o comando new na hora de criar um

novo objeto pertencente à classe.• Ex.:

Page 11: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Construtor• Estaticamente:

Note que, assim como uma estrutura utiliza o operador -> para estruturas criadas dinamicamente e o operador . para as estáticas, o mesmo acontece com os objetos.

Page 12: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Encapsulamento• É uma técnica de programação que fornece uma maior

robustez ao código que está sendo criado.• Basicamente “protege” os atributos de modificações

indesejadas.• Funciona da seguinte forma:

• Atributos encapsulados são do tipo private• São criados métodos para que eles possam ser

acessados e modificados com segurança.• Ex.:

Não é possível remover uma quantia maior que o saldo. Como há encapsulamento,

caso o saldo não seja suficiente para o saque, ele

parmanece inalterado.

Page 13: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Streams• Em C++, a entrada e saída de dados é efetuada através

da biblioteca iostream• Um “stream” representa um dispositivo de entrada ou

saída, tal como o teclado e o console

Page 14: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Entrada Padrão• Entrada padrão: cin

• A leitura é feita utilizando o operator shift rightExemplo:

int a;cin >> a;

• Pode-se ler vários items de uma só vezExemplo:

int, a,b,c;cin >> a >> b >> c;

Page 15: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Entrada Padrão• Saída padrão: cout

• A leitura é feita utilizando o operator shift leftExemplo:

int a;cout << a;

• O comando endl pode ser usado para imprimir um \n• Analogamente ao cin, pode-se imprimir vários items

de uma só vez

int, a,b,c;cout << “Numeros: “ << endl << a << “ “ << b << “ “ << c;

Page 16: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

Dúvidas??

Page 17: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

ExercícioCrie uma classe para representar um inteiro, esta classe deve ser capaz de realizar as seguintes operações: 1) Atribuição de Adição (+=)2) Atribuição de Subtração (-=)3) Pre-Incremento (++?)

O seguinte trecho de código deve funcionar corretamente:

Inteiro a(10);Inteiro b;

b.somar(a);b.somar(a.incrementar());

cout << "A: " << a.getValor() << endl; // Saída 11cout << "B: " << b.getValor() << endl; // Saída 21

Page 18: Aula Prática 13 Orientação a Objeto Monitoria 2010.2.

ExercícioCrie uma classe em C++ que simule um serviço de agenda. Para isso

você deve criar uma classe “Agenda” e uma classe “Compromisso”. A classe “Agenda” deve possuir os seguintes dados:

- Nome do dono- Número telefônico- E-mail- Compromissos

Você deve utilizar encapsulamento para criar métodos usados na modificação dos atributos.

Além disso, a classe “Compromisso” deve possuir os atributos a seguir:

- Data do compromisso- Informações sobre o compromisso

Ao final, receba do usuário duas agendas com cada uma dois compromissos.