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

Post on 13-Jan-2017

383 views 2 download

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

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

PessoaPensar

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# - Classepublic 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# - Encapsulamentopublic string Nome

{

get{return _nome;}

set{_nome = value;}

}

public float Altura

{

get { return this._altura; }

set { this._altura = value; }

}

Revisão de C# - Encapsulamentopublic 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

BibliografiaC# 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