SlideShare uma empresa Scribd logo
1 de 38
Orientação a objetos
     Leonardo Melo Santos
    http://about.me/leonardomelosantos
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
Evolução das linguagens de
programação
Linguagem 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;
Paradigmas de programação
1) 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);
Paradigmas de programação
3) 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;
Paradigmas de programação
4) 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;
Orientação a objetos
Conceitos
● Classe e Objeto
● Abstração
  ○   Classificação/Instanciação;
  ○   Agregação/Composição;
  ○   Associações simples;
  ○   Encapsulamento;
  ○   Generalização/Especialização;
  ○   Polimorfismo;
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.
O que é abstração?


  Abstração é considerada a habilidade de
 modelar características do mundo real do
problema que o programador esteja tentando
                 resolver.
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.
Classificação e instanciação




                                      ica...
                               Na prát
Agregação e composição
A ideia de agregação ou composição
estabelece a criação de novas classes de
objetos 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.
Agregação e composição




                                ica...
                         Na prát
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.
Associação simples




                            ica...
                     Na prát
Encapsulamento


    Um dos aspectos mais positivos da
   programação modular foi a ideia de
    encapsulamento de informações.
Encapsulamento




                        ica...
                 Na prát
Generalização e especialização


Generalizaçã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.
Generalização e especialização




                                        ica...
                                 Na prát
Polimorfismo
   Um mesmo tipo de objeto, sob certas
condições, pode realizar ações diferentes ao
  receber uma mesma mensagem. Ou seja,
  objetos podem ter reações diferentes ao
             mesmo estímulo.
Polimorfismo




                      ica...
               Na prát
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
Construtor
●   Mesmo nome da classe
●   Nenhum retorno
●   Parâmetros
●   Construtor vazio é padrão
    ○ Criado quando nenhum construtor é implementado
Construtor - Exemplo
public class Computador {
   public string monitor;
   public string teclado;
   public string mouse;

    Computador(string m, string t, string mo)
    {
       monitor = m;
       teclado = t;
       mouse = mo;
    }
}
Chamando o construtor
{ ...
Computador novo =
   new Computador(“LG”,”Microsoft”,”Mouse”);
... }

         está fazendo o mesmo que

Computador novo = new Computador();
novo.monitor = “LG”;
novo.teclado = ”Microsoft”;
novo.mouse = ”Mouse”;
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
Propriedades - Exemplo
class Computador {
    private string monitor;
    public string Monitor {
        get { return monitor; }
        set { monitor = value; }
    }
}
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”
Retorno dos métodos
Mé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;
      }
   }
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
Sobrecarga de métodos
Exemplo 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));
   }
Interfaces
●   Utiliza palavra chave interface
●   Não podem ser instanciadas
●   Apenas assinaturas
●   Modificador de acesso não é permitido

Uma interface para um Animal:
   public interface IAnimal {
        //propriedade Raca
        string Raca { get; set; }
        //método Respirar
        void Respirar();
   }
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
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
Implementando classe abstrata
Classes abstratas x interfaces
Característica     Interface                                                Classe Abstrata

Herança múltipla   Uma classe pode implementar diversas interfaces          Uma classe pode herdar somente uma classe

Implementação      Uma interface não pode conter qualquer tipo de código,   Uma classe abstrata pode fornecer código completo
Padrã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 para
terceiros          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 classe
Adicionais         precisa ajustar todas as implementações da interface.    abstrata você tem a opção de fornecer uma
                                                                            implementação padrão para ele.
Dúvidas

Mais conteúdo relacionado

Mais procurados

Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosCloves da Rocha
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageCloves da Rocha
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Luís Fernando Richter
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitosMailson Queiroz
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetosRafael Pinheiro
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 

Mais procurados (20)

Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling Language
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
UML
UMLUML
UML
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetos
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
UML
UMLUML
UML
 
Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 

Destaque

Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Leonardo Melo Santos
 
Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)Waldyr Felix
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Computação Visual com Python
Computação Visual com PythonComputação Visual com Python
Computação Visual com PythonJonh Edson
 
Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...
Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...
Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...Carla Ferreira
 
[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UMLChristopher Cerqueira
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoAlessandro Binhara
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu algLeandro Santos
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
Ruby, Simples e Expressivo
Ruby, Simples e ExpressivoRuby, Simples e Expressivo
Ruby, Simples e ExpressivoRodrigo Martins
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapRoberson Alves
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryReinaldo Junior
 

Destaque (20)

Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
 
Apps Hibridos
Apps HibridosApps Hibridos
Apps Hibridos
 
Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Apostila sobre o Visualg
Apostila sobre o VisualgApostila sobre o Visualg
Apostila sobre o Visualg
 
Computação Visual com Python
Computação Visual com PythonComputação Visual com Python
Computação Visual com Python
 
Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...
Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...
Pesquisa Usuarios IFG (Instituto Federal de Educação, Ciência e Tecnolgia de ...
 
[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML
 
Aula 04
Aula 04Aula 04
Aula 04
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto Basico
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
Ruby, Simples e Expressivo
Ruby, Simples e ExpressivoRuby, Simples e Expressivo
Ruby, Simples e Expressivo
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gap
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 

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

Semelhante a Curso de OO com C# - Parte 01 - Orientação a objetos (20)

Java11
Java11Java11
Java11
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Java7
Java7Java7
Java7
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
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
 
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
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
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
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Interface
InterfaceInterface
Interface
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
v
vv
v
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
7 interfaces
7 interfaces7 interfaces
7 interfaces
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 

Mais de Leonardo Melo Santos

Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETLeonardo Melo Santos
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
 
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsCurso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsLeonardo Melo Santos
 
Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETLeonardo Melo Santos
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalLeonardo Melo Santos
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoLeonardo Melo Santos
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesLeonardo Melo Santos
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoLeonardo Melo Santos
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosLeonardo Melo Santos
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoLeonardo Melo Santos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoLeonardo Melo Santos
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de softwareLeonardo Melo Santos
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisLeonardo Melo Santos
 

Mais de Leonardo Melo Santos (17)

Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NET
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
 
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsCurso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
 
Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NET
 
Scrum - Visão Geral
Scrum - Visão GeralScrum - Visão Geral
Scrum - Visão Geral
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV Digital
 
Web Services XML - .NET framework
Web Services XML - .NET frameworkWeb Services XML - .NET framework
Web Services XML - .NET framework
 
DotNet Remoting - .NET framework
DotNet Remoting - .NET frameworkDotNet Remoting - .NET framework
DotNet Remoting - .NET framework
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - Otimização
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicos
 
Sistemas Workflow
Sistemas WorkflowSistemas Workflow
Sistemas Workflow
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalho
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociais
 

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

  • 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 de programação Linguagem 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ção 1) 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ção 3) 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ção 4) 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;
  • 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 do problema 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.
  • 13. Agregação e composição A ideia de agregação ou composição estabelece a criação de novas classes de objetos 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ção Generalizaçã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.
  • 21. Polimorfismo Um mesmo tipo de objeto, sob certas condiçõ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 - Exemplo public 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 que Computador 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 - Exemplo class 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étodos Mé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étodos Exemplo 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 é permitido Uma 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
  • 37. Classes abstratas x interfaces Característica Interface Classe Abstrata Herança múltipla Uma classe pode implementar diversas interfaces Uma classe pode herdar somente uma classe Implementação Uma interface não pode conter qualquer tipo de código, Uma classe abstrata pode fornecer código completo Padrã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 para terceiros 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 classe Adicionais precisa ajustar todas as implementações da interface. abstrata você tem a opção de fornecer uma implementação padrão para ele.