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

Post on 13-Jan-2017

58 views 1 download

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

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

TipoObjeto 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

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. 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óriaTipo de dados

(nome da classe)

Dúvidas?

César Augusto Pessôa

capfg@hotmail.com