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

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

SEGUNDA FASE Área de Desenvolvimento de Sistemas.

Apresentações semelhantes


Apresentação em tema: "SEGUNDA FASE Área de Desenvolvimento de Sistemas."— Transcrição da apresentação:

1 SEGUNDA FASE Área de Desenvolvimento de Sistemas

2 André de Oliveira Ruz

3 Encapsulamento Não mostre as cartas de seu baralho. Herança Filho de peixe, peixe é. Polimorfismo Vamos nos adaptar!

4 type pessoa = record nome: string[60]; endereco: string[60]; fone: string[13]; string[60]; end; var pes:array[1..50] of pessoa; i: integer; quantpes: integer struct pessoa { char nome[60]; char endereco[60]; char fone[13]; char [60]; }; struct pessoa pes[50]; int i; int quantpes;

5 Qual é a semelhança? Podemos dividi-los em uma classe, uma categoria comum? Mamíferos

6 Para o objeto relógio você pode pedir para adiantar ou atrasar as horas e minutos. Mas como pedir? Você pode enviar uma mensagem para que o objeto exerça um comportamento. Esse comportamento deve alterar algum estado do objeto; em nosso caso a troca de horas e minutos. Você deve associar: mensagem >> comportamento >> chamada de MÉTODO estado >> variáveis internas do objeto

7 É um conjunto de códigos de programação que incluem a definição dos atributos e dos métodos necessários para a criação de um ou mais objetos. Contém toda a descrição da forma do objeto, é um molde para a criação do objeto, é uma matriz geradora de objetos, é a fábrica de objetos. Uma classe também é um tipo definido pelo usuário

8 Tem determinadas propriedades que o caracterizam e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas ainda de atributos. O Objeto interage com o meio e em função de excitações que sofre, realiza determinadas ações que alteram o seu estado (atributos). Um objeto é uma entidade única que reúne atributos e métodos, ou seja, reúne as propriedades do objeto e as reações aos estímulos que sofre.

9 Objetos Estrutura formada por atributos (características) e métodos (ações) Geralmente representam objetos do mundo real (Cliente, Veículo, Aluno, etc) Classes São moldes de objetos São responsáveis por criar instâncias de objetos Definem os atributos e métodos dos objetos

10 Programação Estruturada Orientação a Objetos Processo Revela Dados Projeto Monolítico Uso Único Algoritmo Ordenado Objeto Oculta Dados Projeto Modular Reutilização Algoritmo Desordenado

11 Como definir uma classe e seus atributos public class Cliente { private int clienteId; private string nome; private decimal limiteCredito; private int quantidadeProdutos; } Como criar uma instância de uma classe Cliente novoCliente = new Cliente();

12 Atributos de Classe Quando um atributo é dividido entre todos os objetos criados, ele é armazenado na classe. EX: Um contador de relógios criados. Atributos de Objeto Quando um atributo é individual ele é armazenado no objeto. EX: A hora de um relógio.

13 As ações ou comportamento dos objetos são chamadas na orientação a objeto de métodos, assim, um método é uma função, um serviço fornecido pelo objeto. Os comportamentos do objeto são definidos na classe através dos métodos e servem para manipular e alterar os atributos do objeto. Em um programa orientado a objeto, as excitações são representadas por mensagens que são enviadas a um objeto. Uma mensagem pode ser gerada pelo usuário, por exemplo, ao clicar o mouse.

14 Um método é um comando que representa uma ação class Cliente { private int produtosAdquiridos; public bool EClienteEspecial() { if (produtosAdquiridos < 250) return false; return true; } public void ComprarEspecial() { /* AÇÃO */ }... Cliente proximoCliente = new Cliente(); bool clienteEspecial = proximoCliente.EClienteEspecial(); if (clienteEspecial) proximoCliente.ComprarEspecial();

15 Passando parâmetros por valor class Cliente { private int produtosAdquiridos; public void DefineProdutosAdquiridos(int quantidade) { produtosAdquiridos = quantidade; }... Cliente novoCliente = new Cliente(); int produtos = 255; novoCliente.DefineProdutosAdquiridos(produtos); //OR novoCliente.DefineProdutosAdquiridos(200);

16 Passando parâmetros por referência (usando ref) public void RetornaEndereco(ref int numero, ref string rua) { numero = this.numero; rua = this.rua; } int numeroLocal = 0; string ruaLocal = ; novoCliente.RetornaEndereco(ref numeroLocal, ref ruaLocal); // numeroLocal e ruaLocal recebem novos valores

17 Passando parâmetros por referência (usando out) public void RetornaEndereco(out int numero, out string rua) { numero = this.numero; rua = this.rua; } int numeroLocal; string ruaLocal; novoCliente.RetornaEndereco(out numeroLocal, out ruaLocal); // numeroLocal e ruaLocal são inicializados

18 Utilizando sobrecarga de métodos public void DefineProdutosAdquiridos(int novoNumero) { this.produtosAdquiridos = novoNumero; } public void DefineProdutosAdquiridos(int novoNumero, bool clienteModificado) { if (clienteModificado) this.produtosAdquiridos = novoNumero; } public void DefineProdutosAdquiridos() { this.produtosAdquiridos = RecuperaProdutos(this.ClienteID); }

19 Construtores são métodos especiais responsáveis pela implementação de ações necessárias para a existência de um objeto public class Cliente { public int produtosAdquiridos; public readonly bool clienteEspecial; //Construtor default public Cliente() { if (this.produtosAdquiridos > 250) this.clienteEspecial = true; else this.clienteEspecial = false; }

20 Sobrecarga de Construtores public class Cliente { public string nomeCliente; public int clienteId; public Cliente(): this (desconhecido, 0) { } public Cliente(string nome, int identificacao) { this.nomeCliente = nome; this.clienteId = identificacao; }

21 Pertencem à classe e não às instâncias Podem ser atributos, propriedades e métodos public class Cliente { public static string tipoEntidade = Teste; public static void Excluir(int identificacao) { /* excluir cliente com essa identificação */ }... Console.WriteLine(Tipo de Entidade: {0}, Cliente.tipoEntidade);... int clienteId = 5; Cliente.Excluir(clienteId);

22 A herança está relacionada as hierarquias e as relações entre os objetos. É o mecanismo em que uma classe filha compartilha automaticamente todos os métodos e atributos de sua classe pai. A herança permite implementar classes descendentes implementando os métodos e atributos que se diferenciam da classe pai.

23 Simples Quando uma classe herda as propriedades de uma única classe pai. Múltipla Ocorre quando uma classe tem mais de um pai.

24 São utilizados para definir níveis de acesso aos membros da classe DeclaraçãoDefinição publicAcesso ilimitado privateAcesso limitado à classe e seus membros internalAcesso limitado ao programa (assembly) protected Acesso limitado à classe, seus membros e seus derivados protected internal Acesso limitado à classe, classes derivadas ou membros deste programa (assembly)

25 Criando uma classe derivada public class Pessoa { public string nome; protected int id; public void Cadastrar() { /* rotina para cadastrar */ } } public class Cliente : Pessoa { public void Comprar(int idProduto) { /* ação */ } }... Cliente proximoCliente = new Cliente(Rodrigo); proximoCliente.Cadastrar(); proximoCliente.Comprar(100);

26 Invocando um construtor da classe base na classe derivada public class Pessoa { public Pessoa(string nome) { Console.WriteLine(Construindo Pessoa de Nome {0},nome); } } public class Cliente : Pessoa { public Cliente(string nome) : base(nome) { Console.WriteLine(Construindo Cliente); } }... Cliente proximoCliente = new Cliente(Rodrigo);... Construindo Pessoa de Nome Rodrigo Construindo Cliente

27 Classes Seladas – são classes que não podem ser estendida ou sobrescritas, ou seja, não podemos ter classes derivadas de classes seladas public sealed class Pessoa { // Membros da Classe Pessoa }

28 Polimorfismo significa: Muitas Formas e representa o fato de uma determinada característica ser diferente para cada filho. Partimos de um objeto mais simples e que vai evoluindo. Os conceitos do objeto pai continuam a existir, mesmo que tenham sofrido modificações ou assumido novas formas. Métodos: Amamentar()

29 ObjetosMétodo Invocado Comportamento Diretor Vendedor Funcionario Viajar() Parcerias Vendas Férias

30 Utilizando métodos virtuais public class Pessoa { public virtual void Viajar() { /* Ação */ } } public class Diretor : Pessoa { public override void Viajar() { base.Viajar(); /* Ações Particulares da Classe Diretor */ } public class Vendedor : Pessoa { public override void Viajar() { base.Viajar(); /* Ações Particulares da Classe Vendedor */ }

31 Encapsulamento é o ato de esconder do usuário informações que não são de seu interesse. O objeto atua como uma caixa preta, que realiza determinadas operações mas o usuário não sabe e não precisa saber exatamente como. Basicamente o encapsulamento separa os elementos visíveis de um objeto dos invisíveis.

32 São métodos que protegem acesso aos membros da classe Como acessar as propriedades public string Nome { get { return nomeCliente; } set { nomeCliente = value; } } novoCliente.Nome = Rodrigo Andrade; string nomeCliente = novoCliente.Nome;

33 Nestes casos você apenas define a assinatura do método e deixa a definição por conta da classe que irá herdar a classe pai. Estas classes são então chamadas classes abstratas, o método que você não implementou é chamado de método abstrato. Servem de base para a criação de novas classes As classes abstratas não podem ser instanciadas através da palavra chave New.

34 Uma classe abstrata é uma classe base genérica Contém métodos abstratos que devem ser implementados nas classes que derivam dela Um método abstrato não apresenta implementação na classe base Pode conter membros não-abstratos public abstract class Pessoa { public abstract void Cadastrar(); public abstract string Nome { get; set; } public abstract int Id { get; } public virtual void Viajar() { /* Ação */ } }

35 Derivando a classe abstrata e implementando os membros abstratos public class Diretor : Pessoa { public override void Cadastrar() { /* Ações */ } public override string Nome { get { /* Implementação get */ } set { /* Implementação set */ } } public override int Id { get { /* Implementação get */ } }

36 Uma interface é parecida com uma classe abstrata, a diferença é que uma classe abstrata pode possuir métodos que não estejam implementados e pode possuir métodos que estejam implementados. Uma interface possui somente métodos que não estão implementados e que devem ser implementados pela classe que usar a interface.

37 Como o C# não suporta herança múltipla as interfaces permitem que uma classe estenda múltiplas interfaces contornando o problema. Uma interface no C# não pode conter atributos, somente pode ter métodos, propriedades e eventos. Todos os membros de uma interface são públicos e não podem usar um modificador de acesso.

38 A classe que implementa a interface deve possuir a definição de todos métodos existentes na interface. Esta definição deve possuir o mesmo nome e a mesma assinatura, retorno e parâmetros, do método na interface. O nome da classe e o nome da interface são separados por dois pontos(:).

39 Uma interface define a mesma funcionalidade e comportamento à classes não relacionadas diretamente Declarando a interface public interface IProduto { bool EPerecivel { get; } Fornecedor RecuperarFornecedor(); void RegistrarVenda(Cliente cliente); }

40 Implementando a interface public class Computador : IProduto { private bool ePerecivel; public bool EPerecivel { get { return ePerecivel; } } public Fornecedor RecuperarFornecedor() { return new Fornecedor(); } public void RegistrarVenda(Cliente cliente) { // Rotina para registrar vendas }

41 Pode tornar o comportamento de seus objetos semelhante ao comportamento dos objetos da.NET Framework Exemplos: ICollection IComparer IDictionary public class Cliente : Pessoa, IComparable {... }

42 Orientação a Objetos

43 Animais

44 AnimalOvíparoobjGalinhaMamíferoobjCachorroobjGato

45 Em C#, as seguintes palavras-chave são úteis para explorar o conceito de herança: ABSTRACT Indica uma classe, método ou propriedade que não admite instâncias diretamente. OVERRIDE Indica uma redefinição em uma classe derivada. VIRTUAL Indica um elemento da classe base que pode ser redefinido. THIS Indica um elemento da própria classe. BASE Indica um elemento da classe base. SEALED Indica uma classe que não admite derivadas.

46 A classe abstrata Animal terá as seguintes particularidades : Propriedades Nome, para identificar um Animal. TotalFilhotes, para o total de filhotes gerados. Métodos GerarFilhotes(Quantidade), para gerar novos filhotes. (Sera Sobrescrita) Atributos nome total A classe Mamífero terá a seguintes particularidades: Método: Amamentar, que informa que o filhote está sendo amamentado. A classe Ovíparo terá a seguintes particularidades: Método: Chocar, que informa que o filhote esta sendo chocado.

47 A classe Cao terá as seguintes particularidades : Métodos GerarFilhotes(Quantidade), para gerar novos filhotes. (sobrescrito) Latir A classe Gato terá as seguintes particularidades : Métodos GerarFilhotes(Quantidade), para gerar novos filhotes. (sobrescrito) Miar A classe Galinha terá as seguintes particularidades : Métodos GerarFilhotes(Quantidade), para gerar novos filhotes. (sobrescrito) Cacarejar

48 Existem dois motivos básicos para fazer uso de interfaces: Uma interface é como um contrato que determina o que deve fazer parte de suas classes derivadas; Bibliotecas padronizadas de interfaces uniformizam a construção de projetos.

49 OrnitorrincoOvíparoMamífero

50


Carregar ppt "SEGUNDA FASE Área de Desenvolvimento de Sistemas."

Apresentações semelhantes


Anúncios Google