César Augusto Pessôa
Sumário
 Objetivos
 Programação estruturada
 Programação orientada a objetos
 Paradigmas da orientação a objetos
 Criando uma classe em C#
 Exercícios práticos no Visual Studio
Objetivos
 Ao final da aula, os alunos saberão
identificar as principais diferenças
entre a programação estruturada e a
programação orientada a objetos.
 Apresentar aos alunos uma
introdução a linguagem C# e a IDE
Visual Studio.
Programação estruturada
 Forma de programação onde todos os
programas são desenvolvidos sob três
estruturas: sequência, decisão e iteração
(ou repetição).
 Orientada a criação de estruturas
simples nos programas, usando as sub-
rotinas e as funções. Foi a forma
dominante na criação de software
anterior à programação orientada por
objetos.
Programação estruturada
O que é um objeto
Programação orientada a objetos
 A primeira coisa que devemos ter em
mente é que, tudo em nosso cotidiano
é um objeto!
 E... Cada objeto está inserido em um
contexto, também chamado de
domínio.
Objeto
Domínio
Programação orientada a objetos
 Considerando a chave abaixo como
um objeto, podemos ressaltar
algumas características:
 Cor
 Tamanho
 Material
 Fabricante
 Tipo
Objeto Chave
Quantos tipos de chave existem?
Objeto Pessoa
 Podemos dizer que uma pessoa é um
objeto porque toda a pessoa possui
características muito parecidas,
porém, cada pessoa é única!
 Cor do cabelo
 Tipo do cabelo
 Cor dos olhos
 Formato dos olhos
 Dimensão do sorriso
 Personalidade
Objetos do tipo Pessoa
Classes
 Os objetos de nosso mundo, nosso domínio,
serão identificados dentro de nossos
programas como classes.
 As classes, como representantes dos
objetos, também possuem comportamentos
e características.
 As características de um objeto serão chamadas
atributos ou propriedades.
 O comportamento de um objeto será definido por
meio de métodos ou eventos.
Instanciando um classe
 As classes descrevem como os objetos são
e como se comportam, porém, ela em si não
pode ser utilizada para armazenamento de
informações.
 Uma classe nada mais é do que um tipo de
dados personalizado, ou melhor, adequado
para trazer um objeto do mundo real para o
software.
 Para utilizar este tipo de dados, é necessário
instanciar um objeto com base nesta classe.
Paradigmas da POO
 Herança
 Ocorre quando um objeto possui características e
ações oriundas de outro objeto superior. Por
exemplo, quando um filho herda os olhos e
temperamento do pai.
Paradigmas da POO
 Encapsulamento
 São informações presentes em um objeto e que
estão ocultas para o mundo exterior, somente
sendo possível acessá-las por meio de
interações permitidas pelo objeto. Por exemplo,
quando abrimos uma janela e as pessoas
conseguem enxergar o que estamos fazendo
dentro de nossa casa.
Paradigmas da POO
 Encapsulamento
 Métodos
Objeto
Pessoa
Pensar
Andar
Comer
Chorar
Dirigir
Dormir
Sorrir
Paradigmas da POO
 Encapsulamento
 Atributos ou
 Propriedades
Nome
Endereço
Telefone
Idade
Gênero
Profissão
Ler
Telefone
Ler
Endereço
Ler
Idade
Ler
Nome
Ler
Profissão
Ler
Gênero
Paradigmas da POO
 Encapsulamento
 Não sabemos exatamente como as coisas
acontecem, mas podemos nos relacionar com os
objetos para descobrir e obter mais informações
conforme o necessário.
 E é esta exatamente a maior vantagem do
encapsulamento! Eu não preciso conhecer as
regras específicas de cada objeto, apenas
preciso saber como me relacionar com ele.
“A ignorância é uma espécie de bênção. Se você
não sabe, não existe dor.” – John Lennon
Paradigmas da POO
 Abstração
 Ocorre quando são definidas características
comuns a um grupo de objetos, sendo possível
encontrar as mesmas características em objetos
diferentes. Por exemplo, objetos cortantes.
Paradigmas da POO
 Polimorfismo
 Literalmente significa “muitas formas”. Ocorre
quando uma mesma ação pode ser executada
por diversos objetos diferentes e de formas
diferentes. Por exemplo, podemos dizer que um
pássaro voa, assim como um avião também voa.
Entretanto, ambos são objetos diferentes que
voam de forma diferente.
Interfaces
 Uma interface serve para identificar um
comportamento obrigatório de uma classe.
 Por exemplo, no caso do pássaro e do
avião, ambos devem possuir o método voar,
porém, realizados de forma diferente. Para
isso pode-se utilizar a interface IVoador.
Interfaces
 Podemos então declarar um conjunto de
comportamentos que nossos objetos avião e
pássaro tem em comum.
 O próximo passo, é construir uma interface
que absorva estes comportamentos
(métodos), e possa ser utilizada por ambos
os objetos (classes).
Classes abstratas
 Recebem este nome devido ao seu alto nível
de abstração, ou seja, a grande distância entre
sua implementação e o objeto real.
 Por exemplo, podemos ter uma classe abstrata
denominada ser vivo.
 Com certeza esta classe possui atributos e
métodos que podemos utilizar para pessoas,
cachorros, pássaros, gatos, etc.
 Porém seria muito difícil utilizarmos um objeto
tão abrangente. Para cadastrar uma pessoa,
por exemplo, precisaríamos de informações
específicas, além do básico “ser vivo”.
Classes abstratas
Herança
 Mantendo o nosso exemplo do objeto ser
vivo e se considerarmos ele como abaixo:
 Atributos:
 Altura
 Peso
 Idade
 Métodos
 Respirar
 Comer
 Descansar
Herança
 Uma classe pessoa, poderia herdar
características da classe ser vivo.
 Da mesma forma se criássemos as classes
cachorro, gato, rato e peixe. Todas poderiam
herdar as características e comportamentos
da classe ser vivo, evitando assim que cada
classe tenha que repetir seus atributos e
métodos.
Herança
 Se uma classe abstrata não pode ser
instanciada, então pra que raios ela serve?
Criando uma classe em C#
// Bibliotecas utilizadas
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Namespace do projeto
namespace CadastroDePessoas
{
// Classe
public class Pessoa
{
...
}
public class Pessoa
{
private string _nome;
private float _altura, _peso;
private int _idade;
private DateTime _dataNasc;
private int _genero;
// Construtor sem parâmetros
public Pessoa()
{
}
// Construtor com parâmetros
public Pessoa(string nome, float altura, float peso, int idade, DateTime dataNasc, int genero)
{
this._nome = nome;
this._altura = altura;
this._peso = peso;
this._idade = idade;
this._dataNasc = dataNasc;
this._genero = genero;
}
Criando uma classe em C#
Declaração das variáveis
privadas - atributos
Declaração dos construtores
do objeto
Encapsulamento em C#
public string Nome
{
get{return _nome;}
set{_nome = value;}
}
public float Altura
{
get { return this._altura; }
set { this._altura = value; }
}
Encapsulamento dos
atributos
Método de leitura
Método de escrita
Método de leitura
Método de escrita
Encapsulamento em C#
public DateTime DataNasc
{
get { return this._dataNasc; }
set { this._dataNasc = value; }
}
public int Idade
{
get
{
this._idade = DateTime.Now.Year - this._dataNasc.Year;
return this._idade;
}
}
Método de leitura
Método de escrita
Método de leitura – vantagem do encapsulamento
as demais classes não sabem “como” a idade é calculada
Não possui
método de escrita
Instanciamento de objetos
 Para instanciar um objeto é necessário
utilizar a sua “receita”, a sua classe.
 A classe determina os métodos e atributos
de um objeto, como o mesmo será
construído.
Pessoa objPessoa = new Pessoa();
Nome da variável
(objeto criado)
Aqui será definida a “receita”, o construtor
que será utilizado para instanciar o objeto
A palavra new determinar que será criado um novo
objeto do tipo Pessoa e alocado em memória
Tipo de dados
(nome da classe)
Dúvidas?
César Augusto Pessôa
capfg@hotmail.com

03 - Orientação a objetos e classes em C# v1.0

  • 1.
  • 2.
    Sumário  Objetivos  Programaçãoestruturada  Programação orientada a objetos  Paradigmas da orientação a objetos  Criando uma classe em C#  Exercícios práticos no Visual Studio
  • 3.
    Objetivos  Ao finalda aula, os alunos saberão identificar as principais diferenças entre a programação estruturada e a programação orientada a objetos.  Apresentar aos alunos uma introdução a linguagem C# e a IDE Visual Studio.
  • 4.
    Programação estruturada  Formade programação onde todos os programas são desenvolvidos sob três estruturas: sequência, decisão e iteração (ou repetição).  Orientada a criação de estruturas simples nos programas, usando as sub- rotinas e as funções. Foi a forma dominante na criação de software anterior à programação orientada por objetos.
  • 5.
  • 6.
    O que éum objeto
  • 7.
    Programação orientada aobjetos  A primeira coisa que devemos ter em mente é que, tudo em nosso cotidiano é um objeto!  E... Cada objeto está inserido em um contexto, também chamado de domínio. Objeto Domínio
  • 8.
    Programação orientada aobjetos  Considerando a chave abaixo como um objeto, podemos ressaltar algumas características:  Cor  Tamanho  Material  Fabricante  Tipo Objeto Chave
  • 9.
    Quantos tipos dechave existem?
  • 10.
    Objeto Pessoa  Podemosdizer que uma pessoa é um objeto porque toda a pessoa possui características muito parecidas, porém, cada pessoa é única!  Cor do cabelo  Tipo do cabelo  Cor dos olhos  Formato dos olhos  Dimensão do sorriso  Personalidade
  • 11.
  • 12.
    Classes  Os objetosde nosso mundo, nosso domínio, serão identificados dentro de nossos programas como classes.  As classes, como representantes dos objetos, também possuem comportamentos e características.  As características de um objeto serão chamadas atributos ou propriedades.  O comportamento de um objeto será definido por meio de métodos ou eventos.
  • 13.
    Instanciando um classe As classes descrevem como os objetos são e como se comportam, porém, ela em si não pode ser utilizada para armazenamento de informações.  Uma classe nada mais é do que um tipo de dados personalizado, ou melhor, adequado para trazer um objeto do mundo real para o software.  Para utilizar este tipo de dados, é necessário instanciar um objeto com base nesta classe.
  • 14.
    Paradigmas da POO Herança  Ocorre quando um objeto possui características e ações oriundas de outro objeto superior. Por exemplo, quando um filho herda os olhos e temperamento do pai.
  • 15.
    Paradigmas da POO Encapsulamento  São informações presentes em um objeto e que estão ocultas para o mundo exterior, somente sendo possível acessá-las por meio de interações permitidas pelo objeto. Por exemplo, quando abrimos uma janela e as pessoas conseguem enxergar o que estamos fazendo dentro de nossa casa.
  • 16.
    Paradigmas da POO Encapsulamento  Métodos Objeto Pessoa Pensar Andar Comer Chorar Dirigir Dormir Sorrir
  • 17.
    Paradigmas da POO Encapsulamento  Atributos ou  Propriedades Nome Endereço Telefone Idade Gênero Profissão Ler Telefone Ler Endereço Ler Idade Ler Nome Ler Profissão Ler Gênero
  • 18.
    Paradigmas da POO Encapsulamento  Não sabemos exatamente como as coisas acontecem, mas podemos nos relacionar com os objetos para descobrir e obter mais informações conforme o necessário.  E é esta exatamente a maior vantagem do encapsulamento! Eu não preciso conhecer as regras específicas de cada objeto, apenas preciso saber como me relacionar com ele. “A ignorância é uma espécie de bênção. Se você não sabe, não existe dor.” – John Lennon
  • 19.
    Paradigmas da POO Abstração  Ocorre quando são definidas características comuns a um grupo de objetos, sendo possível encontrar as mesmas características em objetos diferentes. Por exemplo, objetos cortantes.
  • 20.
    Paradigmas da POO Polimorfismo  Literalmente significa “muitas formas”. Ocorre quando uma mesma ação pode ser executada por diversos objetos diferentes e de formas diferentes. Por exemplo, podemos dizer que um pássaro voa, assim como um avião também voa. Entretanto, ambos são objetos diferentes que voam de forma diferente.
  • 21.
    Interfaces  Uma interfaceserve para identificar um comportamento obrigatório de uma classe.  Por exemplo, no caso do pássaro e do avião, ambos devem possuir o método voar, porém, realizados de forma diferente. Para isso pode-se utilizar a interface IVoador.
  • 22.
    Interfaces  Podemos entãodeclarar um conjunto de comportamentos que nossos objetos avião e pássaro tem em comum.  O próximo passo, é construir uma interface que absorva estes comportamentos (métodos), e possa ser utilizada por ambos os objetos (classes).
  • 23.
    Classes abstratas  Recebemeste nome devido ao seu alto nível de abstração, ou seja, a grande distância entre sua implementação e o objeto real.  Por exemplo, podemos ter uma classe abstrata denominada ser vivo.  Com certeza esta classe possui atributos e métodos que podemos utilizar para pessoas, cachorros, pássaros, gatos, etc.  Porém seria muito difícil utilizarmos um objeto tão abrangente. Para cadastrar uma pessoa, por exemplo, precisaríamos de informações específicas, além do básico “ser vivo”.
  • 24.
  • 25.
    Herança  Mantendo onosso exemplo do objeto ser vivo e se considerarmos ele como abaixo:  Atributos:  Altura  Peso  Idade  Métodos  Respirar  Comer  Descansar
  • 26.
    Herança  Uma classepessoa, poderia herdar características da classe ser vivo.  Da mesma forma se criássemos as classes cachorro, gato, rato e peixe. Todas poderiam herdar as características e comportamentos da classe ser vivo, evitando assim que cada classe tenha que repetir seus atributos e métodos.
  • 27.
    Herança  Se umaclasse abstrata não pode ser instanciada, então pra que raios ela serve?
  • 28.
    Criando uma classeem C# // Bibliotecas utilizadas using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; // Namespace do projeto namespace CadastroDePessoas { // Classe public class Pessoa { ... }
  • 29.
    public class Pessoa { privatestring _nome; private float _altura, _peso; private int _idade; private DateTime _dataNasc; private int _genero; // Construtor sem parâmetros public Pessoa() { } // Construtor com parâmetros public Pessoa(string nome, float altura, float peso, int idade, DateTime dataNasc, int genero) { this._nome = nome; this._altura = altura; this._peso = peso; this._idade = idade; this._dataNasc = dataNasc; this._genero = genero; } Criando uma classe em C# Declaração das variáveis privadas - atributos Declaração dos construtores do objeto
  • 30.
    Encapsulamento em C# publicstring Nome { get{return _nome;} set{_nome = value;} } public float Altura { get { return this._altura; } set { this._altura = value; } } Encapsulamento dos atributos Método de leitura Método de escrita Método de leitura Método de escrita
  • 31.
    Encapsulamento em C# publicDateTime DataNasc { get { return this._dataNasc; } set { this._dataNasc = value; } } public int Idade { get { this._idade = DateTime.Now.Year - this._dataNasc.Year; return this._idade; } } Método de leitura Método de escrita Método de leitura – vantagem do encapsulamento as demais classes não sabem “como” a idade é calculada Não possui método de escrita
  • 32.
    Instanciamento de objetos Para instanciar um objeto é necessário utilizar a sua “receita”, a sua classe.  A classe determina os métodos e atributos de um objeto, como o mesmo será construído. Pessoa objPessoa = new Pessoa(); Nome da variável (objeto criado) Aqui será definida a “receita”, o construtor que será utilizado para instanciar o objeto A palavra new determinar que será criado um novo objeto do tipo Pessoa e alocado em memória Tipo de dados (nome da classe)
  • 34.
  • 35.