Curso de OO com C# - Parte 01 - Orientação a objetos

9.654 visualizações

Publicada em

Curso de OO com C# - Parte 01 - Orientação a objetos

Publicada em: Tecnologia
0 comentários
16 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
9.654
No SlideShare
0
A partir de incorporações
0
Número de incorporações
870
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
16
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Curso de OO com C# - Parte 01 - Orientação a objetos

  1. 1. Orientação a objetos Leonardo Melo Santos http://about.me/leonardomelosantos
  2. 2. Conteúdo programático● Introdução ○ Evolução das linguagens de programação ○ Paradigmas de programação● Orientação a objetos ○ Conceitos ○ Diagramas ○ Modificadores de acesso ○ Construtores ○ Propriedades
  3. 3. Evolução das linguagens deprogramaçãoLinguagem de máquina e linguagem montadora● Muitos comandos para fazer alto simples;● Exigência de muito conhecimento;● Códigos não tão legíveis;Linguagens de alto nível● Popularização do uso dos computadores;● Códigos mais amigáveis devido à complexidade dos problemas;
  4. 4. Paradigmas de programação1) Paradigma imperativo● Código mais amigágel que linguagens montadoras;● Código sequencial;2) Paradigma procedural● Paradigma imperativo mas com o uso de subrotinas (funções e procedimentos);
  5. 5. Paradigmas de programação3) Programação Modular e Estruturada● Surgiu com a demanda de grandes projetos;● Agrupamento de código-fonte através de módulos;● Mais facilidade na manutenção do código- fonte;
  6. 6. Paradigmas de programação4) Paradigma orientado a objetos● O problema é partido em vários pedaços, a ponto de definirmos objetos/entidades;● Visa aproximar a maneira como construímos os programas com o mundo real;
  7. 7. Orientação a objetos
  8. 8. Conceitos● Classe e Objeto● Abstração ○ Classificação/Instanciação; ○ Agregação/Composição; ○ Associações simples; ○ Encapsulamento; ○ Generalização/Especialização; ○ Polimorfismo;
  9. 9. O que é classe e o que é objeto?● Uma classe é a descrição de um grupo de objetos com propriedades (atributos), comportamentos (métodos), e relacionamentos com outros objetos (associações e agregações);● Objeto: Denota uma entidade, seja ela de natureza física, conceitual ou de software. Elementos como pessoas, organizações, máquinas, animais ou eventos podem ser ica... Na prát considerados objetos.
  10. 10. O que é abstração? Abstração é considerada a habilidade de modelar características do mundo real doproblema que o programador esteja tentando resolver.
  11. 11. Classificação e instanciação● Classificar significa agrupar objetos com base em estruturas e comportamentos semelhantes;● Instanciar objetos significa gerar novos exemplares a partir de uma descrição abstrata de um objeto genérico.
  12. 12. Classificação e instanciação ica... Na prát
  13. 13. Agregação e composiçãoA ideia de agregação ou composiçãoestabelece a criação de novas classes deobjetos a partir da junção de classes jáexistentes.● Agregação: Quando unimos um conjunto de objetos para formarmos um novo objeto;● Decomposição: Quando, analisando um objeto, isolamos cada um de seus componentes.
  14. 14. Agregação e composição ica... Na prát
  15. 15. Associação simples As entidades envolvidas apresentam existências independentes, mas existe uma ligação entre elas. A agregação não é única forma de relacionamento entre objetos e classes.
  16. 16. Associação simples ica... Na prát
  17. 17. Encapsulamento Um dos aspectos mais positivos da programação modular foi a ideia de encapsulamento de informações.
  18. 18. Encapsulamento ica... Na prát
  19. 19. Generalização e especializaçãoGeneralização e especialização são abstrações que permitem o reuso de objetos através da criação de classes de objetos a partir de outras classes.
  20. 20. Generalização e especialização ica... Na prát
  21. 21. Polimorfismo Um mesmo tipo de objeto, sob certascondições, pode realizar ações diferentes ao receber uma mesma mensagem. Ou seja, objetos podem ter reações diferentes ao mesmo estímulo.
  22. 22. Polimorfismo ica... Na prát
  23. 23. Modificadores de acesso● public ○ Acessado por qualquer outro objeto● private ○ Acessado somente na classe que o define ○ Padrão● protected ○ Acessado na classe que o define e nas suas ○ classes herdadas● internal ○ Acessado somente por objetos do mesmo assembly
  24. 24. Construtor● Mesmo nome da classe● Nenhum retorno● Parâmetros● Construtor vazio é padrão ○ Criado quando nenhum construtor é implementado
  25. 25. Construtor - Exemplopublic class Computador { public string monitor; public string teclado; public string mouse; Computador(string m, string t, string mo) { monitor = m; teclado = t; mouse = mo; }}
  26. 26. Chamando o construtor{ ...Computador novo = new Computador(“LG”,”Microsoft”,”Mouse”);... } está fazendo o mesmo queComputador novo = new Computador();novo.monitor = “LG”;novo.teclado = ”Microsoft”;novo.mouse = ”Mouse”;
  27. 27. Propriedades (ou atributos)● Acesso customizado aos atributos● Modifica a forma como dados são mostrados aos outros objetos● Blocos: ○ get: Retornar informações do atributo ○ set: Modificar informações do atributo
  28. 28. Propriedades - Exemploclass Computador { private string monitor; public string Monitor { get { return monitor; } set { monitor = value; } }}
  29. 29. Métodos● Similar às funções/procedimentos● Assinatura do método ○ <modificador> <retorno> <nome> (<parametros>) { <código> return <retorno>; // Se não for void }● Retorno dos métodos ○ void: Não retorna nada ○ <tipo específico>: Deve retornar um valor com o mesmo tipo definido na assinatura do método. Utilização da palavra chave “return”
  30. 30. Retorno dos métodosMétodo void class Computador { public void HelloWorld() { Console.WriteLine(“Hello World”); } }Método com retorno class Computador { public int Soma(int n1, int n2) { return n1 + n2; } }
  31. 31. Sobrecarga de métodos● Métodos com mesmo nome e assinaturas diferentes● Permite maior entendimento de código● Cuidado com nomes de parâmetros. ○ Nomes diferentes mas tipos iguais não significa que são diferentes assinaturas
  32. 32. Sobrecarga de métodosExemplo simples public int Soma(int n1, int n2) { return n1 + n2; } public int Soma (int n1, int n2, int n3) { return n1 + n2 + n3 }Chamando outra versão do método: public int Soma(int n1, int n2) { return n1 + n2; } public int Soma (int n1, int n2, int n3) { return Soma (n1, Soma(n2,n3)); }
  33. 33. Interfaces● Utiliza palavra chave interface● Não podem ser instanciadas● Apenas assinaturas● Modificador de acesso não é permitidoUma interface para um Animal: public interface IAnimal { //propriedade Raca string Raca { get; set; } //método Respirar void Respirar(); }
  34. 34. Implementando uma interface● Classes que implementam as interfaces devem implementar todos os seus membros ○ Se pelo menos um não estiver implementado, código não compilará● Utilização da estrutura: Classe : Interface ○ Exemplo: public class Cachorro : IAnimal● Herança múltipla é permitida para interfaces● Interfaces podem herdar de interfaces● No caso de uma classe herdar de outra e várias interfaces, separam-se por vírgulas. (Classe deve ser a primeira) ○ public class Cachorro : Animal, IComparable, ISerializable
  35. 35. Classes abstratas● Não podem ser instânciadas● Enquanto possuir membros abstratos a classe deve ser abstrata● Classes incompletas ○ Contém implementações ○ Contém métodos abstratos ■ Métodos que devem ser implementados por classes filhas● “Mistura” de classe e interface
  36. 36. Implementando classe abstrata
  37. 37. Classes abstratas x interfacesCaracterística Interface Classe AbstrataHerança múltipla Uma classe pode implementar diversas interfaces Uma classe pode herdar somente uma classeImplementação Uma interface não pode conter qualquer tipo de código, Uma classe abstrata pode fornecer código completoPadrão muito menos código padrão. , código padrão ou ter apenas a declaração de seu esqueleto para ser posteriormente sobrescrita.Constantes Suporte somente constantes do tipo estática. Pode conter constantes estáticas e de instância.Componentes de Uma implementação de uma interface pode ser incluída Uma classe de terceiros precisa ser reescrita paraterceiros a qualquer classe de terceiros. estender somente a partir da classe abstrata.Homogeneidade Se todas as diversas implementações compartilham a Se as várias implementações são todas do tipo e assinatura do método então a interface funciona compartilham um comportamento e status comum , melhor. então a classe abstrata funciona melhor.Manutenção Se o código do seu cliente conversa somente em termos idêntico de uma interface, você pode facilmente alterar a implementação concreta usando um método factory.Velocidade Lento , requer trabalho extra para encontrar o método Rápido correspondente na classe atual.Clareza Todas as declarações de constantes em uma interface Você pode por código compartilhado em uma classe são presumidamente publicas ou estáticas. abstrata. Você pode usar código para computar o valor inicial de suas constantes e variáveis de instância ou estáticas.Funcionalidades Se você incluir um novo método em uma interface você Se você incluir um novo método em uma classeAdicionais precisa ajustar todas as implementações da interface. abstrata você tem a opção de fornecer uma implementação padrão para ele.
  38. 38. Dúvidas

×