Sexta .NET – Aula 5 – Orientação a Objeto – Parte I

Bom dia Pessoal, primeiramente gostaria de pedir desculpas pelo atraso no lançamento desta aula.
Ontem tive alguns probleminhas após as 18:00 e não foi possível entrar no sistema.

Mas salvo o atraso, o que nos importa é não ficar sem conteúdo, aqui vamos então!

Tópico abordado: Orientação a Objeto – Parte I

Conceitos de Orientação a Objeto

Estruturada X Orientada a Objeto

Benefícios da Orientação a Objeto

Classe

É um conjunto de códigos de programação que incluem a definição dos atributos e dos métodos necessários para a criação de um ou mais objetos.

Contém toda a descrição da forma do objeto, é um molde para a criação do objeto, é uma matriz geradora de objetos, é a fábrica de objetos.

Uma classe também é um tipo definido pelo usuário.

Objeto ou Instância

Tem determinadas propriedades que o caracterizam e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas ainda de atributos.
O objeto interage com o meio e em função de excitações que sofre, realiza determinadas ações que alteram o seu estado (atributos).
Um objeto é uma entidade única que reúne atributos e métodos, ou seja, reúne as propriedades do objeto e as reações aos estímulos que sofre.

Classes e Objetos

Declaração de Classes e Objetos

Declarando uma Classe:

class Pessoa
{
string nome;
void Andar() { }
}

Declarando um Objeto:

Endereco objEndereco = new Endereco();

Atributos e Métodos

Atributos
Atributos de Classe
Quando um atributo é dividido entre todos os objetos criados, ele é armazenado na classe.
EX: Um contador de relógios criados.

Atributos de Objeto
Quando um atributo é individual ele é armazenado no objeto.
EX: A hora de um relógio.

string nome = “Bill”;
int idade = 53;

Métodos

As ações ou comportamento dos objetos são chamados, na orientação a objeto, de métodos, assim, um método é uma função, um serviço fornecido pelo objeto.
Os comportamentos do objeto são definidos na classe através dos métodos e servem para manipular e alterar os atributos do objeto.
Em um programa orientado a objeto, as excitações são representadas por mensagens que são enviadas a um objeto. Uma mensagem pode ser gerada pelo usuário, por exemplo, ao clicar o mouse.

Um método é um comando que representa uma ação

class Cliente {
private int produtosAdquiridos;
public bool EClienteEspecial() {
if (produtosAdquiridos < 250) return false; return true; } public void ComprarEspecial() { /* AÇÃO */ } } ... Cliente proximoCliente = new Cliente(); bool clienteEspecial = proximoCliente.EClienteEspecial(); if (clienteEspecial) proximoCliente.ComprarEspecial();

Passando parâmetros por valor

class Cliente {
private int produtosAdquiridos;

public void DefineProdutosAdquiridos(int quantidade)
{
produtosAdquiridos = quantidade;
}
}
...
Cliente novoCliente = new Cliente();
int produtos = 255;

novoCliente.DefineProdutosAdquiridos(produtos);
//OR
novoCliente.DefineProdutosAdquiridos(200);

Passando parâmetros por referência (usando ref)

public void RetornaEndereco(ref int numero, ref string rua)
{
numero = this.numero;
rua = this.rua;
}

int numeroLocal = 0;
string ruaLocal = “”;

novoCliente.RetornaEndereco(ref numeroLocal, ref ruaLocal);

// numeroLocal e ruaLocal recebem novos valores

Passando parâmetros por referência (usando out)

public void RetornaEndereco(out int numero, out string rua)
{
numero = this.numero;
rua = this.rua;
}

int numeroLocal;
string ruaLocal;

novoCliente.RetornaEndereco(out numeroLocal, out ruaLocal);

// numeroLocal e ruaLocal são inicializados

Métodos - Sobrecarga

Utilizando sobrecarga de métodos

public void DefineProdutosAdquiridos(int novoNumero)
{
this.produtosAdquiridos = novoNumero;
}
public void DefineProdutosAdquiridos(int novoNumero, bool clienteModificado)
{
if (clienteModificado)
this.produtosAdquiridos = novoNumero;
}
public void DefineProdutosAdquiridos()
{
this.produtosAdquiridos = RecuperaProdutos(this.ClienteID);
}

Construtores

Construtores são métodos especiais responsáveis pela implementação de ações necessárias para a existência de um objeto

public class Cliente
{
public int produtosAdquiridos;
public readonly bool clienteEspecial;

//Construtor default
public Cliente()
{
if (this.produtosAdquiridos > 250)
this.clienteEspecial = true;
else
this.clienteEspecial = false;
}
}

Bom pessoal, o conteúdo de hoje é muito complexo e necessita que tenha bastante cuidado, pois o bom entendimento da orientação a objeto é fundamental para que possamos ser bons desenvolvedores .NET.
Vou parando o conteúdo neste tópico e retornaremos na próxima sexta-feira com o Tópico Herança e Polimorfismo que complementa este conteúdo de hoje.

Mais uma vez peço desculpas pelo atraso na publicação.

Att,
Victor Santos