Conceitos de POO em C# com Exemplos Práticos

Educação Artística44,21 KB

Conceitos Fundamentais de Programação Orientada a Objetos

Classe

Define todos os atributos e comportamentos expostos pelo objeto.

Atributos

São as características de uma classe (externamente visível).

Classe e Objeto

Classe é a definição de um tipo.

Objeto é uma instância desse tipo, criada quando o programa é executado.

Abstração

É o processo de simplificar um problema difícil, tratando apenas os detalhes pertinentes a uma solução.

Encapsulamento

Às vezes é referenciado como ocultação de informação. Tem dois objetivos:

  1. Combinar os métodos e dados dentro de uma classe (suporte à classificação).
  2. Controlar o acesso a métodos e dados (controlar o uso da classe).

Vantagens de Encapsular

  • Independência, significa que você pode reutilizar o objeto em qualquer lugar.
  • Tornar transparentes as alterações em seu objeto, desde que não altere a sua interface.
  • Usar um objeto encapsulado não causará problemas inesperados entre o objeto e o restante do programa, por sua implementação ser independente.

Propriedades

Fornecem acesso controlado aos dados de um objeto.

Sobrecarga de Métodos

Permite que vários métodos de mesmo nome sejam definidos na mesma classe, desde que esses métodos tenham diferentes conjuntos de parâmetros.

Construtores

É um método especial que possui o mesmo nome da classe.

Dados e Métodos Estáticos

Todos os métodos devem ser declarados dentro de uma classe. Mas, se você declarar um método ou um campo como static, pode chamar o método ou acessar o campo usando o nome da classe. Nenhuma instância é necessária.

Interface

  • Não permite campos, pois é uma implementação de um tributo objeto.
  • Não permite construtores.
  • Não é possível usar (enums, structs, classes, interfaces) dentro da interface.

Funcionário

Imagem

Form

private void button1_Click(object sender, EventArgs e)
{int idade;

if (!Metodos.ValidaData(txtNascimento.Text, out idade))
{MessageBox.Show("Data inválida");
return;}
lblIdade.Text = idade.ToString();


if (!Metodos.ValidaNome(txtNome.Text))
{MessageBox.Show("Nome deve ter sobrenome.");
return;}

Funcionario func = new Funcionario();
try{func.SetNome(txtNome.Text);
func.Nascimento = Convert.ToDateTime(txtNascimento.Text);

func.Sexo = (SexoEnum)cbSexo.SelectedIndex;
func.EstadoCivil = (EstadoCivilEnum)cbECivil.SelectedIndex;}
catch(Exception erro)
{MessageBox.Show(erro.Message);}}

Métodos

static class Metodos
{//deverá validar se o nome possui nome e sobrenome.
public static bool ValidaNome(string nome)
{if (nome.Trim().IndexOf(' ') == -1)
return false;
else
return
true;}

//- deverá ver se a data informada é válida.
public static bool ValidaData(string data, out int idade)
{try{ TimeSpan diferenca = DateTime.Now.Subtract(Convert.ToDateTime(data));
idade = (int)Math.Floor((diferenca.TotalDays / 365));
return true;}
catch { idade = 0;
return false;
}}}

Sexo Enum

namespace EX_7
{public enum SexoEnum

{Masculino, Feminino}
-------------------------------------------------------------------------

Estado Civil Enum

public enum EstadoCivilEnum
{casado = 0, solteiro = 1, viuvo = 2}

Classe Funcionário

class Funcionario
{// Construtor padrão
public Funcionario(){ }

// Construtor parametrizado
public Funcionario(
string pNome, SexoEnum pSexo,
EstadoCivilEnum pEcivil, DateTime pDatanascimento)

{SetNome(pNome);
Sexo = pSexo;
EstadoCivil = pEcivil;
Nascimento = pDatanascimento;}

SexoEnum sexo;

public SexoEnum Sexo
{get { return sexo; }
set { sexo = value; }}

EstadoCivilEnum estadoCivil;

public EstadoCivilEnum EstadoCivil
{get { return estadoCivil; }
set { estadoCivil = value; }}
DateTime nascimento;

public DateTime Nascimento
{get { return nascimento; }
set{ if (value >= DateTime.Now)
throw new Exception("Data inválida");
else nascimento = value;}}

string nome;
public void SetNome(string nome)
{ this.nome = nome;}

public string GetNome()
{return nome;}

}

Imagem

Jogo

Form

public partial class Form1 : Form
{List<Jogo> lista; //= new List();

public Form1()
{ InitializeComponent();
lista = Jogo.Carregar(); }

private void SALVAR_Click(object sender, EventArgs e)
{Jogo j = new Jogo();
try { j.Codigo = Convert.ToInt32(txtCodigo.Text);
j.Descricao = txtDescricao.Text;
j.Valor = Convert.ToDouble(txtValor.Text);
j.Dificuldade = (DificuldadeEnum)cbDificuldade.SelectedIndex;
j.Salvar();
lista.Add(j); }
catch(Exception erro)
{ MessageBox.Show(erro.Message); } }

private void LISTAR LISTA_Click(object sender, EventArgs e)
{ listBox1.Items.Clear();
foreach(Jogo j in lista)
{ listBox1.Items.Add("");
listBox1.Items.Add("Jogo: " + j.Codigo.ToString());
listBox1.Items.Add(j.Descricao);
listBox1.Items.Add(j.Valor);
listBox1.Items.Add(j.Dificuldade.ToString()); } }

private void CARREGARJOGOS_Click(object sender, EventArgs e)
{ lista = Jogo.Carregar(); }

private void LISTADIFICULDADE_Click(object sender, EventArgs e)
{ listBox1.Items.Clear();
foreach (Jogo j in lista)
{ if ((int)j.Dificuldade == cbDificuldadeListagem.SelectedIndex)
{ listBox1.Items.Add("");
listBox1.Items.Add("Jogo: " + j.Codigo.ToString());
listBox1.Items.Add(j.Descricao);
listBox1.Items.Add(j.Valor);
listBox1.Items.Add(j.Dificuldade.ToString()); } } }

Baixar

PDF Word HTML