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
 

Kürzlich hochgeladen

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Kürzlich hochgeladen (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

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