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.
2. 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
3. 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.
4. 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.
7. 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
8. 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
10. 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.
12. 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.
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.
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 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.
21. 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).
22. 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”.
24. 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
25. 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.
26. Herança
Se uma classe 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.
33.
34. 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
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