1 / 37

Orientação a Objetos

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 .

Télécharger la présentation

Orientação a Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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.

  3. 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.

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

  5. Conceitos de OO • Classe • Objeto • Instância • Atributo • Métodos • Sobrecarga • Herança • Encapsulamento • Abstração • Polimorfismo • Classe Abstrata • Interface

  6. Classe x Objeto

  7. 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

  8. Classe • Definição de classe em C#: public class Minha classe { }

  9. Atributo • Normalmente é utilizado internamente na classe (A exposição das características da classe é tarefa dos métodos). • Exemplo: public class Livro { // Atributos private string titulo; private short ano; ... }

  10. Exemplo • Quais seriam os atributos de uma classe Carro ? • Placa • Número do chassi • Marca • Modelo • Ano • Cor • Combustível • Capacidade • Motor • Velocidade

  11. 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

  12. Métodos Exemplo public class Carro { public double Acelerar(double velocidade) { } }

  13. 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

  14. 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.

  15. 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

  16. 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();

  17. Criação de um objeto Instâncias da classe Casa (objetos) Classe 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(); Casa 12 boolean abrePorta() {} int numero Color cor static String arquiteto 56 72

  18. 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 = newObjeto(); • Alguns podem requerer parâmetros • Objeto obj = newObjeto(35, "Nome");

  19. 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.

  20. 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

  21. ConstrutoresExemplo public class Cliente { int codigo; String nome; //Construtor public Cliente() { } }

  22. ConstrutoresExemplo public class Cliente { int codigo; String nome; //Construtor public Cliente(int cod, String nom) { codigo = cod; nome = nom; } }

  23. ConstrutoresExemplo public class Cliente { int codigo; String nome; //Construtores public Cliente() { } public Cliente(int cod, String nom) { codigo = cod; nome = nom; } }

  24. Exercício • Crie uma classe ProcessaStrings que permita: • Armazenar uma lista de Strings • Contar o número de palavras de uma das strings • ContarPalavras(intindiceString) • Inverter uma das palavras • InverterString(intindiceString) • Concaternar duas strings • ConcatenarStrings(int indiceString1, int indiceString2) • Crie uma classe Teste para utilizar a classe ProcessaStrings

  25. 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.

  26. 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

  27. 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!

  28. Pai - numero: int ... + Pai (n: int) + set (n: int) + get ( ): int ... Filho - dado: String ... + Filho (n: int , d: String) + set (d: String) + get ( ): String ... Herança • Notação UML

  29. 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{...}

  30. Herança • Os métodosna subclassequeforamherdados, continuamacessandotodososmembros (atributos) dasuperclasse, incluindoosnãoherdados. • 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 construtoresdasuperclassenãoseremherdados, elespodem ser invocadosparainicializarosatributosherdados (membrosdasuperclasse), através com comando: • base()

  31. 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 } }

  32. 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

  33. Herança • Herdando atributos e métodos • publicx protectedx 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

  34. Exercício • Escreva o código para implementar a seguinte hierarquia de classes: • Atributos da classe “Animal” : • String nome • Métodos da classe “Animal”: • voidimp() // imprime o nome • // e a classe do animal • StringgetNome() • voidtalk() // “Me not falar” • Métodos da classe “Passaro”: • voidtalk() // “piu, piu.” • Métodos da classe “BemTeVi”: • voidtalk() // “bem-te-vi!” • Atributos da classe “Papagaio”: • Stringvocabulario // frase • Métodos da classe “Papagaio”: • voidtalk() // exibe vocabulario • voidsetVoc(String v) //altera voc. • A classe mamífero não tem atributos ou métodos. • Atributos da classe “Cachorro”: • booleanlateMuito • Métodos da classe “Cachorro”: • voidsetLateAlto() • voidsetLateBaixo() • voidtalk() // “AU! AU!” ou “au, au...” • Métodos da classe “Vaca”; • voidtalk() // “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.

  35. Atributos da classe “Animal” : • String nome • Métodos da classe “Animal”: • voidimp() // imprime o nome • // e a classe do animal • StringgetNome() • voidtalk() // “Me not falar” • Métodos da classe “Passaro”: • voidtalk() // “piu, piu.” • Métodos da classe “BemTeVi”: • voidtalk() // “bem-te-vi!” • Atributos da classe “Papagaio”: • Stringvocabulario // frase • Métodos da classe “Papagaio”: • voidtalk() // exibe vocabulario • voidsetVoc(String v) //altera voc.

  36. 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.

  37. 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

More Related