Your SlideShare is downloading. ×
Curso de OO com C# - Parte 01 - Orientação a objetos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

5,416
views

Published on

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

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

Published in: Technology

0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,416
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
10
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Orientação a objetos Leonardo Melo Santos http://about.me/leonardomelosantos
  • 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. 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. 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. 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. 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. Orientação a objetos
  • 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. 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. O que é abstração? Abstração é considerada a habilidade de modelar características do mundo real doproblema que o programador esteja tentando resolver.
  • 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. Classificação e instanciação ica... Na prát
  • 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. Agregação e composição ica... Na prát
  • 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. Associação simples ica... Na prát
  • 17. Encapsulamento Um dos aspectos mais positivos da programação modular foi a ideia de encapsulamento de informações.
  • 18. Encapsulamento ica... Na prát
  • 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. Generalização e especialização ica... Na prát
  • 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. Polimorfismo ica... Na prát
  • 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. Construtor● Mesmo nome da classe● Nenhum retorno● Parâmetros● Construtor vazio é padrão ○ Criado quando nenhum construtor é implementado
  • 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. 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. 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. Propriedades - Exemploclass Computador { private string monitor; public string Monitor { get { return monitor; } set { monitor = value; } }}
  • 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. 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. 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. 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. 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. 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. 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. Implementando classe abstrata
  • 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. Dúvidas