César Augusto Pessôa
Sumário
 Objetivos
 Programação estruturada
 Programação orientada a objetos
 Paradigmas da orientação a objetos
 Revisão 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 pequena
revisão de 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
 Etc.
Objeto Chave
Quanto 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
 Etc.
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 um
comportamento 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.
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.
Podemos então 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
muito 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?
Revisão de C# - Sintaxe
// 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
{
...
}
Revisão de C# - Classe
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;
}
Revisão de C# - Encapsulamento
public string Nome
{
get{return _nome;}
set{_nome = value;}
}
public float Altura
{
get { return this._altura; }
set { this._altura = value; }
}
Revisão de C# - Encapsulamento
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;
}
set { this._idade = value; }
}
Revisão de C# - Tipos de dados
Tipo de dados Intervalo
byte 0 .. 255
sbyte -128 .. 127
short -32.768 .. 32.767
ushort 0 .. 65,535
int -2.147.483.648 .. 2.147.483.647
uint 0 .. 4.294.967.295
long -9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807
Revisão de C# - Tipos de dados
Tipo de dados Intervalo
ulong 0 .. 18.446.744.073.709.551.615
float -3,402823e38 3,402823e38
double -1,79769313486232e308 1,79769313486232e308
decimal -79228162514264337593543950335
.. 79228162514264337593543950335
char Um caractere Unicode.
string Uma seqüência de caracteres Unicode.
bool VERDADEIRO ou FALSO.
Bibliografia
Use a Cabeça C#
2ª Edição – 2010
Autores: Stellman, Andrew; Greene, Jennifer
Editora: Alta Books
Como Programar com Asp. Net e C#
Autor: Lotar, Alfredo
Editora: NOVATEC
Bibliografia
C# e .NET – Guia do desenvolvedor
Autor: Lima, Edwin
Editora: Editora Campus
Desenvolvimento web com ASP.NET MVC
Autores: Fabrício Sanchez, Márcio Fábio Althmann
Editora: Casa do código
Dúvidas?
César Augusto Pessôa
capfg@hotmail.com

02 - Orientação a objetos e revisão de C# v1.5

  • 1.
  • 2.
    Sumário  Objetivos  Programaçãoestruturada  Programação orientada a objetos  Paradigmas da orientação a objetos  Revisão 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 pequena revisão de 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  Etc. Objeto Chave
  • 9.
    Quanto 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  Etc.
  • 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 um comportamento 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.
  • 13.
    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.
  • 14.
    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.
  • 15.
    Paradigmas da POO Encapsulamento  Métodos Objeto Pessoa Pensar Andar Comer Chorar Dirigir Dormir Sorrir
  • 16.
    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
  • 17.
    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
  • 18.
    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.
  • 19.
    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.
  • 20.
    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. Podemos então utilizar a interface IVoador.
  • 21.
    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).
  • 22.
    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 muito específicas, além do básico “ser vivo”.
  • 23.
  • 24.
    Herança  Mantendo onosso exemplo do objeto ser vivo e se considerarmos ele como abaixo:  Atributos:  Altura  Peso  Idade  Métodos  Respirar  Comer  Descansar
  • 25.
    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.
  • 26.
    Herança  Se umaclasse abstrata não pode ser instanciada, então pra que raios ela serve?
  • 27.
    Revisão de C#- Sintaxe // 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 { ... }
  • 28.
    Revisão de C#- Classe 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; }
  • 29.
    Revisão de C#- Encapsulamento public string Nome { get{return _nome;} set{_nome = value;} } public float Altura { get { return this._altura; } set { this._altura = value; } }
  • 30.
    Revisão de C#- Encapsulamento 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; } set { this._idade = value; } }
  • 31.
    Revisão de C#- Tipos de dados Tipo de dados Intervalo byte 0 .. 255 sbyte -128 .. 127 short -32.768 .. 32.767 ushort 0 .. 65,535 int -2.147.483.648 .. 2.147.483.647 uint 0 .. 4.294.967.295 long -9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807
  • 32.
    Revisão de C#- Tipos de dados Tipo de dados Intervalo ulong 0 .. 18.446.744.073.709.551.615 float -3,402823e38 3,402823e38 double -1,79769313486232e308 1,79769313486232e308 decimal -79228162514264337593543950335 .. 79228162514264337593543950335 char Um caractere Unicode. string Uma seqüência de caracteres Unicode. bool VERDADEIRO ou FALSO.
  • 34.
    Bibliografia Use a CabeçaC# 2ª Edição – 2010 Autores: Stellman, Andrew; Greene, Jennifer Editora: Alta Books Como Programar com Asp. Net e C# Autor: Lotar, Alfredo Editora: NOVATEC
  • 35.
    Bibliografia C# e .NET– Guia do desenvolvedor Autor: Lima, Edwin Editora: Editora Campus Desenvolvimento web com ASP.NET MVC Autores: Fabrício Sanchez, Márcio Fábio Althmann Editora: Casa do código
  • 36.
  • 37.