SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Orientação a objetos
JOSÉ CLÉBER DOS SANTOS FERREIRA
MICROSOFT CERTIFIED TECHNOLOGY SPECIALIST
BR.LINKEDIN.COM/IN/CLEBERDS
Conceitos de
orientação a objeto
Classes
Objetos
Modificadores de acesso
Métodos e atributos
Sobrecarga de métodos
Construtores
Encapsulamento
Herança
Classes Abstratas
Interfaces
Polimorfismo
Sobrescrita de métodos
Classes

    Uma classe é um projeto fabricar objetos
    Determina um conjunto de objetos com:
        propriedades semelhantes
        comportamentos semelhantes
        relacionamentos comuns com outros objetos
Classes

    Membros das classes
        Constantes
        Atributos
        Métodos
        Construtores


    Modificadores de Acesso
        public, protected, internal, private
Objetos

    Objetos são gerados a partir de classes

    Uma classe define os atributos e o comportamento dos objetos
     gerados por ela

    Todo objeto é uma instância de uma classe

    Instanciando um objeto:

     Cliente proximoCliente = new Cliente();
Modificadores de acesso
Modificadores de acesso são utilizados para definir níveis de
acesso a membros das classes

      Declaração                                Definição

   public               Acesso ilimitado


   private              Acesso limitado à classe e seus membros


   internal             Acesso limitado ao programa (assembly)

                        Acesso limitado à classe, seus membros e a tipos derivados
   protected
                        da mesma
                        Acesso limitado à classe, classes derivadas ou membros
   protected internal
                        deste programa (assembly)
Classes - Atributos

    Definindo uma classe e seus atributos

     public class Cliente {
         private string   nome;
         private decimal limiteCredito;
         private int clienteID;
     }
Classes - Métodos

    Métodos representam as operações associadas à classe

     public void AumentarLimite(decimal val) {
          limiteCredito = limiteCredito + val;
     }


    Chamando um método:

     proximoCliente.AumentarLimite(100D);
Sobrecarga de métodos

    Chama-se de sobrecarga de métodos (overloading) o ato de criar
     diversos métodos com o mesmo nome que se diferenciam pela lista
     de argumentos (parâmetros)

    Métodos com mesmo nome, mas com tipo, quantidade ou
     ordenação de parâmetros diferentes, são considerados métodos
     diferentes
Sobrecarga de métodos

    Ex:

      public void AumentarLimite(decimal val, decimal val2) {
           this.imiteCredito = this.limiteCredito + val + val2;
      }
Classes - Construtores

  Construtores são métodos especiais que implementam as ações
   necessárias para inicializar um objeto

       Tem o mesmo nome da classe

       Não possuem tipo de retorno (nem void)

       Parâmetros são opcionais

       Ex:

         public Cliente(string param1, int param2) {
              this.nome = param1;
              this.clienteID = param2;
         }
Encapsulamento
    São métodos que protegem o acesso aos membros da classe


     public string Nome {
         get {
             return this.nome;
         }
         set {
              this.nome = value;
         }
     }
    Acessando propriedades


     proximoCliente.Nome = "Microsoft";
Herança

    Herança é uma relação de especialização entre classes

    A ideia central de herança é que novas classes são criadas a partir
     de classes já existentes

        Subclasse herda de uma Superclasse

        Subclasse é mais específica que a Superclasse

    Herança origina uma estrutura em árvore
Herança

    Para definir a herança de classes em C# utiliza-se um “:” seguido
     do nome da classe base

    C# suporta herança simples de classes

     public class Classe : SuperClasse {
          …
     }
Sobrescrita de métodos

    Uma subclasse pode sobrescrever (do inglês override) métodos da
     superclasse

        Sobrescrita permite completar ou modificar um comportamento
         herdado

        Quando um método é referenciado em uma subclasse, a versão
         escrita para a subclasse é utilizada, ao invés do método na superclasse
Sobrescrita de métodos

    Um método de uma classe, que pode ser sobrescrito em uma
     subclasse, deve ser marcado pela palavra-chave virtual
    Um método que sobrescreve um método herdado é marcado pela
     palavra-chave override


     public class SuperClasse {
         public virtual void Metodo(){…}
     }
     public class Classe : SuperClasse {
         public override void Metodo() {…}
     }
Classes Abstratas

    Em uma hierarquia de classe, quanto mais alta a classe, mais
     abstrata é sua definição

        Uma classe no topo da hierarquia pode definir apenas o
         comportamento e atributos que são comuns a todas as classes

        Em alguns casos, a classe nem precisa ser instanciada diretamente e
         cumpre apenas o papel de ser um repositório de comportamentos e
         atributos em comum

    É possível definir classes, métodos e propriedades abstratas em C#
Classes Abstratas

    Marca-se a classe com a palavra-chave abstract


     public abstract class Funcionario()
     {
         public abstract decimal CalcularSalario();
         public abstract string Codigo {get; set;}
     }
Interfaces

    Interfaces podem ser utilizadas para separar a especificação do

     comportamento de um objeto de sua implementação concreta

    Dessa forma a interface age como um contrato, o qual define

     explicitamente quais métodos uma classe deve obrigatoriamente

     implementar
Interfaces

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

    Uma interface informa apenas quais são o nome, tipo de retorno e os parâmetros
     dos métodos.

         A forma como os métodos são implementados não é preocupação da
          interface.

         A interface representa o modo como você quer que um objeto seja usado.
Interfaces

    Declarando interfaces:

        Uma interface é declarada de forma semelhante a uma classe

        Utiliza-se a palavra-chave interface ao invés de class

        Em C#, interfaces podem conter métodos, propriedades, indexadores
         e eventos

        Não é possível fornecer modificadores para os membros da interface

             São implicitamente públicos e abstratos
Interfaces

    Declarando uma interface:

      interface IPilha {
          void Empilhar(object obj);
          object Desempilhar();
          object Topo{get;}
      }
Interfaces

    Implementando uma interface:

     public class PilhaArray : IPilha {
         private object[] elementos;
         public void Empilhar(object obj){...}
         public object Desempilhar(){...}
         public object Topo{
             get {...}
         }
         ...
     }
Interfaces

    Implementação explícita de interfaces:

        Se uma classe implementa duas interfaces que contêm um membro
         com a mesma assinatura, a mesma implementação será utilizada para
         as duas interfaces

             Esta característica pode tornar o código inconsistente

        C# permite implementar explicitamente um método de uma interface
         agregando o nome da interface antes do nome do método

             Como consequência, os métodos somente poderão ser chamados via uma
              variável do tipo da interface adequada
Interfaces

    Implementando explicitamente uma interface:

     interface IUmaInterface {
       void metodo();
     }
     interface IOutraInterface {
       void metodo();
     }
     public class MinhaClasse : IUmaInterface, IOutraInterface
     {
       public void IUmaInterface.metodo(){...}
       public void IOutraInterface.metodo(){...}
     }
Polimorfismo

    Quando declaramos uma variável como sendo do tipo de uma
     interface, essa variável irá aceitar qualquer objeto de uma classe
     que implemente essa interface

    Dessa maneira, temos acessos aos métodos definidos na interface
     de forma independente do tipo de objeto que estamos utilizando
Polimorfismo

 Ex:
       public class Animal{
           public virtual void EmitirSom(string texto){…}
       }
       public class Felino: Animal{
           public override void EmitirSom(string texto) {…}
       }


       Animal leao = new Felino();
Obrigado!!!

Weitere ähnliche Inhalte

Was ist angesagt?

Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - ConceitosMayron Cachina
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classesCarlos Melo
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
 
Declarações e Controle de Acesso
Declarações e Controle de AcessoDeclarações e Controle de Acesso
Declarações e Controle de AcessoElenilson Vieira
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaWanderlei Silva do Carmo
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 

Was ist angesagt? (20)

Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
Declarações e Controle de Acesso
Declarações e Controle de AcessoDeclarações e Controle de Acesso
Declarações e Controle de Acesso
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
03 poo
03 poo03 poo
03 poo
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Poo padadigmas
Poo padadigmasPoo padadigmas
Poo padadigmas
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 

Andere mochten auch

Andere mochten auch (9)

Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Aula 160309
Aula 160309Aula 160309
Aula 160309
 
C# crud – listando os dados do banco de dados
C# crud – listando os dados do banco de dadosC# crud – listando os dados do banco de dados
C# crud – listando os dados do banco de dados
 
Relacionamentos entity framework
Relacionamentos entity frameworkRelacionamentos entity framework
Relacionamentos entity framework
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
 
Apostila UML
Apostila UML Apostila UML
Apostila UML
 
Ebook ITIL Na Prática
Ebook ITIL Na PráticaEbook ITIL Na Prática
Ebook ITIL Na Prática
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados I
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 

Ähnlich wie Orientação a Objetos

Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoRegis Magalhães
 
Script c
Script cScript c
Script cRaphael
 
Classes objetos
Classes objetosClasses objetos
Classes objetosnikson123
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens PooInfogenius
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaMoises Omena
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseRegis Magalhães
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
Aula 4 acessibilidade
Aula 4   acessibilidadeAula 4   acessibilidade
Aula 4 acessibilidadeDanilo Alves
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – IIIGabriel Faustino
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 

Ähnlich wie Orientação a Objetos (20)

Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita Polimorfismo
 
Script c
Script cScript c
Script c
 
Java11
Java11Java11
Java11
 
3- POO
3- POO3- POO
3- POO
 
Poo
PooPoo
Poo
 
v
vv
v
 
Classes objetos
Classes objetosClasses objetos
Classes objetos
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Aula 4 acessibilidade
Aula 4   acessibilidadeAula 4   acessibilidade
Aula 4 acessibilidade
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 

Orientação a Objetos

  • 1. Orientação a objetos JOSÉ CLÉBER DOS SANTOS FERREIRA MICROSOFT CERTIFIED TECHNOLOGY SPECIALIST BR.LINKEDIN.COM/IN/CLEBERDS
  • 2. Conceitos de orientação a objeto Classes Objetos Modificadores de acesso Métodos e atributos Sobrecarga de métodos Construtores Encapsulamento Herança Classes Abstratas Interfaces Polimorfismo Sobrescrita de métodos
  • 3. Classes  Uma classe é um projeto fabricar objetos  Determina um conjunto de objetos com:  propriedades semelhantes  comportamentos semelhantes  relacionamentos comuns com outros objetos
  • 4. Classes  Membros das classes  Constantes  Atributos  Métodos  Construtores  Modificadores de Acesso  public, protected, internal, private
  • 5. Objetos  Objetos são gerados a partir de classes  Uma classe define os atributos e o comportamento dos objetos gerados por ela  Todo objeto é uma instância de uma classe  Instanciando um objeto: Cliente proximoCliente = new Cliente();
  • 6. Modificadores de acesso Modificadores de acesso são utilizados para definir níveis de acesso a membros das classes Declaração Definição public Acesso ilimitado private Acesso limitado à classe e seus membros internal Acesso limitado ao programa (assembly) Acesso limitado à classe, seus membros e a tipos derivados protected da mesma Acesso limitado à classe, classes derivadas ou membros protected internal deste programa (assembly)
  • 7. Classes - Atributos  Definindo uma classe e seus atributos public class Cliente { private string nome; private decimal limiteCredito; private int clienteID; }
  • 8. Classes - Métodos  Métodos representam as operações associadas à classe public void AumentarLimite(decimal val) { limiteCredito = limiteCredito + val; }  Chamando um método: proximoCliente.AumentarLimite(100D);
  • 9. Sobrecarga de métodos  Chama-se de sobrecarga de métodos (overloading) o ato de criar diversos métodos com o mesmo nome que se diferenciam pela lista de argumentos (parâmetros)  Métodos com mesmo nome, mas com tipo, quantidade ou ordenação de parâmetros diferentes, são considerados métodos diferentes
  • 10. Sobrecarga de métodos  Ex: public void AumentarLimite(decimal val, decimal val2) { this.imiteCredito = this.limiteCredito + val + val2; }
  • 11. Classes - Construtores  Construtores são métodos especiais que implementam as ações necessárias para inicializar um objeto  Tem o mesmo nome da classe  Não possuem tipo de retorno (nem void)  Parâmetros são opcionais  Ex: public Cliente(string param1, int param2) { this.nome = param1; this.clienteID = param2; }
  • 12. Encapsulamento  São métodos que protegem o acesso aos membros da classe public string Nome { get { return this.nome; } set { this.nome = value; } }  Acessando propriedades proximoCliente.Nome = "Microsoft";
  • 13. Herança  Herança é uma relação de especialização entre classes  A ideia central de herança é que novas classes são criadas a partir de classes já existentes  Subclasse herda de uma Superclasse  Subclasse é mais específica que a Superclasse  Herança origina uma estrutura em árvore
  • 14. Herança  Para definir a herança de classes em C# utiliza-se um “:” seguido do nome da classe base  C# suporta herança simples de classes public class Classe : SuperClasse { … }
  • 15. Sobrescrita de métodos  Uma subclasse pode sobrescrever (do inglês override) métodos da superclasse  Sobrescrita permite completar ou modificar um comportamento herdado  Quando um método é referenciado em uma subclasse, a versão escrita para a subclasse é utilizada, ao invés do método na superclasse
  • 16. Sobrescrita de métodos  Um método de uma classe, que pode ser sobrescrito em uma subclasse, deve ser marcado pela palavra-chave virtual  Um método que sobrescreve um método herdado é marcado pela palavra-chave override public class SuperClasse { public virtual void Metodo(){…} } public class Classe : SuperClasse { public override void Metodo() {…} }
  • 17. Classes Abstratas  Em uma hierarquia de classe, quanto mais alta a classe, mais abstrata é sua definição  Uma classe no topo da hierarquia pode definir apenas o comportamento e atributos que são comuns a todas as classes  Em alguns casos, a classe nem precisa ser instanciada diretamente e cumpre apenas o papel de ser um repositório de comportamentos e atributos em comum  É possível definir classes, métodos e propriedades abstratas em C#
  • 18. Classes Abstratas  Marca-se a classe com a palavra-chave abstract public abstract class Funcionario() { public abstract decimal CalcularSalario(); public abstract string Codigo {get; set;} }
  • 19. Interfaces  Interfaces podem ser utilizadas para separar a especificação do comportamento de um objeto de sua implementação concreta  Dessa forma a interface age como um contrato, o qual define explicitamente quais métodos uma classe deve obrigatoriamente implementar
  • 20. Interfaces  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.  Uma interface informa apenas quais são o nome, tipo de retorno e os parâmetros dos métodos.  A forma como os métodos são implementados não é preocupação da interface.  A interface representa o modo como você quer que um objeto seja usado.
  • 21. Interfaces  Declarando interfaces:  Uma interface é declarada de forma semelhante a uma classe  Utiliza-se a palavra-chave interface ao invés de class  Em C#, interfaces podem conter métodos, propriedades, indexadores e eventos  Não é possível fornecer modificadores para os membros da interface  São implicitamente públicos e abstratos
  • 22. Interfaces  Declarando uma interface: interface IPilha { void Empilhar(object obj); object Desempilhar(); object Topo{get;} }
  • 23. Interfaces  Implementando uma interface: public class PilhaArray : IPilha { private object[] elementos; public void Empilhar(object obj){...} public object Desempilhar(){...} public object Topo{ get {...} } ... }
  • 24. Interfaces  Implementação explícita de interfaces:  Se uma classe implementa duas interfaces que contêm um membro com a mesma assinatura, a mesma implementação será utilizada para as duas interfaces  Esta característica pode tornar o código inconsistente  C# permite implementar explicitamente um método de uma interface agregando o nome da interface antes do nome do método  Como consequência, os métodos somente poderão ser chamados via uma variável do tipo da interface adequada
  • 25. Interfaces  Implementando explicitamente uma interface: interface IUmaInterface { void metodo(); } interface IOutraInterface { void metodo(); } public class MinhaClasse : IUmaInterface, IOutraInterface { public void IUmaInterface.metodo(){...} public void IOutraInterface.metodo(){...} }
  • 26. Polimorfismo  Quando declaramos uma variável como sendo do tipo de uma interface, essa variável irá aceitar qualquer objeto de uma classe que implemente essa interface  Dessa maneira, temos acessos aos métodos definidos na interface de forma independente do tipo de objeto que estamos utilizando
  • 27. Polimorfismo Ex: public class Animal{ public virtual void EmitirSom(string texto){…} } public class Felino: Animal{ public override void EmitirSom(string texto) {…} } Animal leao = new Felino();