37
Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira [email protected]

Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira [email protected]

Embed Size (px)

Citation preview

Page 1: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Orientação a Objetos

Curso de Férias 2011

Enrique Pimentel Leite de Oliveira

[email protected]

Page 2: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Orientação a objetos

Na POO, implementa-se um conjunto de classes que definem os objetos presentes no software.

Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.

Page 3: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Programação Estruturada vs. Programação OO

A programação estruturada tem como principal foco as ações (procedimentos e funções)

A programação OO se preocupa com os objetos e seus relacionamentos.

Além do conceito de objeto, a programação OO tem como alicerces os conceitos de encapsulamento, classe, herança e polimorfismo.

Page 4: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Programação Estruturada vs. Programação OO

Programação Orientada a Objetos Programação Estruturada

Métodos Procedimentos e funções

Atributos Variáveis

Mensagens Chamadas a procedimentos e funções

Classes Tipos de dados definidos pelo usuário

Herança -

Polimorfismo -

Page 5: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Conceitos de OO

Classe Objeto Instância Atributo Métodos Sobrecarga Herança

Encapsulamento Abstração Polimorfismo Classe Abstrata Interface

Page 6: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Classe x Objeto

Page 7: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Classe

Representa um conjunto de objetos com suas próprias características.

Uma classe define o comportamento dos objetos, através de métodos e quais estados (características) ele é capaz de manter, através de atributos.

Exemplo de classe: Seres humanos Carro

Page 8: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Classe

Definição de classe em C#:

public class Minha classe{}

Page 9: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Atributo

Normalmente é utilizado internamente na classe (A exposição das características da classe é tarefa dos métodos).

Exemplo:public class Livro{

// Atributosprivate string titulo;private short ano;...

}

Page 10: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Exemplo Quais seriam os atributos de uma classe Carro ?

Placa Número do chassi Marca Modelo Ano Cor Combustível Capacidade Motor Velocidade

Page 11: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Métodos

Conceito: ações que podem ser realizadas pelo objeto;

Determinam como um objeto agirá ao receber uma mensagem;

São usados para dar acesso às funcionalidades dos objetos;

Exemplo: Acender Apagar Iluminar

Page 12: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Métodos Exemplo

public class Carro{public double Acelerar(double velocidade){

}

}

Page 13: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Modificadores de acesso

Os modificadores de acesso são palavras-chave que modificam a forma como podem ser acessadas as classes, métodos e/ou variáveis

Modificador Significado

public Atributo ou método acessível a partir de qualquer lugar

private Atributo ou método acessível apenas para o código que faz parte da classe onde foi criado.

protected Atributo ou método acessível apenas para o código que faz parte do mesmo pacote, ou uma classe derivada (veremos com detalhes na parte de Herança)

Não especificado Atributo ou método acessível dentro da classe onde foi criado e em classes que pertencem ao mesmo pacote.

Maiores informações:http://msdn.microsoft.com/en-us/library/wxh6fsc7(v=VS.90).aspx

Page 14: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Objetos

Objeto: É uma instância de uma classe. Um objeto é capaz de armazenar estados através

de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.

Exemplo de objetos da classe Humanos: João, José, Maria

Exemplo de objetos da classe Carro: Ferrari, Golf, Audi, Celta, Fusca.

Page 15: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Objetos

Identificação do carro: Placa: WWS2345 Número do chassi: 9BGFG09ZYKJ182937 Marca : Chevrolet Modelo : Corvette Ano: 2001 Cor : Roxo Combustível: gasolina Capacidade: 4 pessoas Motor: 2.3

Page 16: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Criação de um objeto

Em C#, utiliza-se a seguinte sintaxe para criação de objetos: <Tipo> <nome> = new <Tipo>();

Exemplos: Computador comp1 = new Computador(); Pessoa pess = new Pessoa();

Page 17: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Criação de um objeto

Casa

boolean abrePorta() {}int numeroColor corstatic String arquiteto

12

56

72

Classe

Instâncias da classe Casa (objetos)

Casa c1 = new Casa();c1.numero = 12;c1.cor = Color.Yellow;

Casa c2 = new Casa();c2.numero = 56;c2.cor = Color.Red;

Casa c3 = new Casa();c3.numero = 72;c3.cor = Color.White;c3.abrePorta();

Page 18: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Construtores

Construtores são procedimentos realizados na construção de objetos Parecem métodos, mas não têm tipo de retorno e têm nome

idêntico ao nome da classe Nem sempre aparecem explícitos em uma classe: podem ser

omitidos (o sistema oferece uma implementação padrão) Para cada objeto, o construtor é chamado exatamente

uma vez (durante sua criação) Exemplo:

Objeto obj = new Objeto(); Alguns podem requerer parâmetros

Objeto obj = new Objeto(35, "Nome");

Page 19: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Construtores Implícitos

São aqueles que não são declarados dentro do código da classe, porém são chamados no momento da instanciação.

A linguagem se encarrega de iniciar os atributos da classe com os valores padrões adequados aos seus tipos.

Explícitos São construtores declarados dentro do código da

classe e que têm a finalidade de iniciar os atributos com valores diferentes dos padrões ou realizar determinadas tarefas no momento em que o objeto é criado.

Page 20: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

ConstrutoresCaracterísticas É o primeiro “método” executado por um objeto. Deve ter o mesmo nome da classe. Não pode ter um tipo de retorno. É utilizado quando um objeto é instanciado

através do operador new Na maioria das vezes é declarado como public Ele é responsável por alocar memória

Page 21: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

ConstrutoresExemplo

public class Cliente {

int codigo; String nome;

//Construtorpublic Cliente() { }

}

Page 22: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

ConstrutoresExemplo

public class Cliente {

int codigo; String nome;

//Construtorpublic Cliente(int cod, String nom) {

codigo = cod; nome = nom;

} }

Page 23: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

ConstrutoresExemplopublic class Cliente {

int codigo; String nome;

//Construtorespublic Cliente() { }public Cliente(int cod, String nom) { codigo = cod; nome = nom;

} }

Page 24: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Exercício

Crie uma classe ProcessaStrings que permita: Armazenar uma lista de Strings Contar o número de palavras de uma das strings

ContarPalavras(int indiceString) Inverter uma das palavras

InverterString(int indiceString) Concaternar duas strings

ConcatenarStrings(int indiceString1, int indiceString2)

Crie uma classe Teste para utilizar a classe ProcessaStrings

Page 25: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Exercício

Crie uma classe Veiculo com as seguintes características: Marca Modelo Ano Placa

Em seguida crie uma classe Estacionamento que permita controlar a entrada e saída e veículos. Considere que a primeira hora custa R$ 3,00 e as demais

horas R$ 1,00. Modele a classe Estacionamento de acordo com as

necessidades do seu projeto.

Page 26: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com base em uma classe já existente Esta classe existente pode ser tanto uma classe do

próprio C#, ou ainda uma classe construída por outra pessoa Superclasse: classe já existente Subclasse: classe criada a partir da superclasse

Objetivo: proporcionar o reutilização de código

Page 27: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Herança “Herança é a capacidade de reutilizar código pela

especialização de soluções genéricas já existentes” Novas classes são criadas a partir de outras já existentes

Subclasse herda de uma Superclasse atributos métodos

Subclasse Absorve atributos e comportamentos além de adicionar os seus

próprios Pode sobrescrever métodos da superclasse

Construtores nunca são herdados!

Page 28: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Notação UML Pai

- numero: int...

+ Pai (n: int)+ set (n: int)+ get ( ): int...

Filho

- dado: String...

+ Filho (n: int , d: String)+ set (d: String)+ get ( ): String...

Page 29: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Em C#, utiliza-se : para definir herança de classes

Exemplos:

public class <nomesubclasse> : <nomesuperclasse> {...}

public class Motorista : Funcionario{...}

public class Engenheiro : Funcionario{...}

29

Page 30: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Os métodos na subclasse que foram herdados, continuam acessando todos os membros (atributos) da superclasse, incluindo os não herdados. Se for necessário invocar um método da superclasse dentro

de algum método da subcalsse, em C# utiliza-se: base.Metodo()

Apesar dos construtores da superclasse não serem herdados, eles podem ser invocados para inicializar os atributos herdados (membros da superclasse), através com comando: base()

Page 31: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança - Exemplo

public class Animal{ private String tipo;

public Animal(String tipo1) { tipo = tipo1; }

public void show() { Console.Write(“Eu sou um ”

+ tipo); }}

public class Cachorro : Animal{ private String nome; // Nome do cachorro private String raça; // Raça do cachorro

public Cachorro(String nome1): base(“cachorro”) { nome = nome1; // Nome fornecido raça = “Desconhecida”; // Raça default }

public Cachorro(String nome1, String r):base(“cachorro”) { nome = nome1; // Nome fornecido raça =r; // Raça fornecida }}

Page 32: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Subclasse herda os membros da superclasse Os membros da superclasse são tratados como membros

da subclasse, isto é, como se tivessem sido declarados dentro da subclasse.

Nem todos os atributos e métodos da superclasse são obrigatoriamente acessíveis na subclasse, pois isto dependerá dos modificadores de acesso.

Modificador private não permite acesso direto dentro da subclasse.

Um objeto possui seus próprios atributos e métodos, mais os atributos e métodos da superclasse

Page 33: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Herança

Herdando atributos e métodos public x protected x private

public: acessível em qualquer classe protected: acessível por métodos da própria classe ou

de uma subclasse private: acessível somente nos métodos da própria

classe Métodos construtores NUNCA são herdados Os métodos na classe derivada que foram herdados

da superclasse, continuam podendo acessar TODOS os membros da superclasse

Page 34: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Exercício

Escreva o código para implementar a seguinte hierarquia de classes:

Atributos da classe “Animal” :• String nome

Métodos da classe “Animal”:• void imp() // imprime o nome

// e a classe do animal• String getNome()• void talk() // “Me not falar”

Métodos da classe “Passaro”:• void talk() // “piu, piu.”

Métodos da classe “BemTeVi”:• void talk() // “bem-te-vi!”

Atributos da classe “Papagaio”:• String vocabulario // frase

Métodos da classe “Papagaio”:• void talk() // exibe vocabulario• void setVoc(String v) //altera voc.

A classe mamífero não tem atributos ou métodos.

Atributos da classe “Cachorro”:• boolean lateMuito

Métodos da classe “Cachorro”:• void setLateAlto()• void setLateBaixo()• void talk() // “AU! AU!” ou “au, au...”

Métodos da classe “Vaca”;• void talk() // “Muuu...”

Implemente a classe Zoo (possui apenas o método main) que testa a hierarquia de classes, mantendo vetores de animais. A saída do programa deve ser feita via uma janela gráfica.

Page 35: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Atributos da classe “Animal” :• String nome

Métodos da classe “Animal”:• void imp() // imprime o nome // e a classe do animal• String getNome()• void talk() // “Me not falar”

Métodos da classe “Passaro”:• void talk() // “piu, piu.”

Métodos da classe “BemTeVi”:• void talk() // “bem-te-vi!”

Atributos da classe “Papagaio”:• String vocabulario // frase

Métodos da classe “Papagaio”:• void talk() // exibe vocabulario• void setVoc(String v) //altera voc.

Page 36: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Exercício Final

Crie um programa que permita controlar as contas bancárias de um cliente

O sistema deverá permitir: Cadastrar contas (conta corrente, conta especial e

poupança) Fazer saques e depósitos Movimentação entre contas.

Page 37: Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Referências

Deitel, C# como Programar – Editora Makron Books – Segunda edição, 2007

Rafael Santos, Introdução à Programação Orientada a Objetos usando JAVA – Editora Campus – Série SBC

Desenvolvedor 5 estrelas. Disponível em http://www.mslatam.com/brasil/dce/

Desenvolvimento para Web. Disponível em http://msdn.microsoft.com/pt-br/ff380144.aspx