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

35
César Augusto Pessôa

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

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

César Augusto Pessôa

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

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

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

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.

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

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.

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

Programação estruturada

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

O que é um objeto

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

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

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

Programação orientada a objetos

Considerando a chave abaixo como

um objeto, podemos ressaltar

algumas características:

Cor

Tamanho

Material

Fabricante

TipoObjeto Chave

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

Quantos tipos de chave existem?

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

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

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

Objetos do tipo Pessoa

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

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.

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

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.

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

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.

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

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.

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

Paradigmas da POO Encapsulamento

Métodos

Objeto

PessoaPensar

Andar

Comer

Chorar

Dirigir

Dormir

Sorrir

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

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

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

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

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

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.

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

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.

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

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.

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

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).

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

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”.

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

Classes abstratas

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

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

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

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.

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

Herança Se uma classe abstrata não pode ser

instanciada, então pra que raios ela serve?

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

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

{

...

}

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

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

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

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

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

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

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

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)

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

Dúvidas?

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

César Augusto Pessôa

[email protected]