Guia de POO: Métodos, Classes e Estruturas de Controle
Classificado em Computação
Escrito em em português com um tamanho de 12,14 KB
Conceitos Fundamentais de Programação Orientada a Objetos
Métodos Acessores: Get e Set
Set
Nomeamos um método acessor com set toda vez que este método for modificar algum campo ou atributo de uma classe. Se não criarmos um método acessor set para algum atributo, isso significa que este atributo não deve ser modificado.
Como o valor de um atributo da classe será modificado, não é necessário que este método retorne nenhum valor, por isso, os métodos setters são void
. Porém, obrigatoriamente, eles têm que receber um argumento que será o novo valor do campo.
Get
Nomeamos um método acessor com get toda vez que este método for consultar algum campo ou atributo de uma classe.
Como este método irá verificar um valor, ele sempre terá um tipo de retorno, como String
, int
, float
, etc., mas não receberá nenhum argumento.
O que é Encapsulamento?
Encapsulamento vem de "encapsular", que em programação orientada a objetos significa separar o programa em partes, o mais isoladas possível. A ideia é tornar o software mais flexível, fácil de modificar e de criar novas implementações.
Graças ao encapsulamento, podemos ver as classes apenas pelos serviços (métodos) que elas oferecem, sem precisar conhecer como o serviço está implementado internamente. Cada classe é responsável por controlar seus próprios atributos, definindo um "contrato" que determina o que o mundo exterior pode fazer com seus objetos.
Métodos e Comportamentos
Métodos são blocos de código que pertencem a uma classe e têm por finalidade realizar uma tarefa. Conhecidos como funções ou procedimentos, eles ajudam no design do sistema e na reutilização de software. Métodos geralmente correspondem a uma ação do objeto (ex: correr, somar, calcular).
Comportamento de um objeto é definido pelo conjunto de métodos que sua classe possui.
Método Construtor
O método construtor é um método especial que tem o mesmo nome da classe. Sua responsabilidade é inicializar um objeto quando ele é criado (instanciado). Isso garante que possamos ter múltiplos objetos com as mesmas características, mas que sejam instâncias distintas e independentes.
Diferença entre Método e Construtor
Enquanto um método define uma ação que um objeto pode realizar, o construtor é o "método" especial responsável por construir e inicializar esse objeto.
Definições Chave em POO
- Classe: É o agrupamento de objetos com a mesma estrutura de dados e comportamento. A classe é a "planta" ou descrição de um objeto.
- Atributos: São as propriedades ou características da classe (variáveis).
- Método: É o conjunto de funcionalidades (ações) da classe.
- Objeto: É uma instância de uma classe, algo distinguível que contém atributos e possui um determinado comportamento.
Tipos de Dados Primitivos
- Boolean: Pode assumir os valores
true
oufalse
. - Char: Armazena um único caractere.
- Byte: Tipo de dado inteiro de 8 bits.
- Short: Inteiro de 16 bits em notação de complemento de dois.
- Int: Inteiro de 32 bits em notação de complemento de dois. Pode assumir valores entre -2.147.483.648 (-231) e 2.147.483.647 (231-1).
- Long: Inteiro de 64 bits, usado para números grandes. Pode assumir valores de -9.223.372.036.854.775.808L até 9.223.372.036.854.775.807L.
- Float e Double: Tipos para números de ponto flutuante (decimais).
double
tem precisão maior quefloat
.
Operadores e Comandos
Operador instanceof
instanceof
é um operador de comparação que retorna um valor booleano (true
ou false
) indicando se um objeto é uma instância de uma determinada classe.
Operador new
Cria uma instância (objeto) de uma classe enquanto o programa está sendo executado. Sua sintaxe é: new NomeDaClasse();
Comando throw
Serve para lançar uma exceção. Um objeto de uma classe de exceção deve ser instanciado e lançado através do comando throw
, geralmente dentro de um bloco try {}
.
Bloco try
Serve para envolver um trecho de código que pode gerar uma exceção, permitindo que ela seja tratada e evitando que o programa pare de forma inesperada. Sua sintaxe é try {}
, geralmente seguida por catch {}
.
Comando break
O comando break
serve para interromper a execução de uma estrutura de repetição (laço) ou de um bloco switch
.
Comando continue
O comando continue
serve para pular a iteração atual de um laço e desviar o fluxo para o início da próxima iteração.
Comando return
Serve para retornar um valor de um método, como o resultado de uma operação matemática.
Arrays
É uma estrutura de dados que armazena uma coleção de elementos de um mesmo tipo. Os elementos são acessados através de um índice, que indica a posição do valor a ser manipulado (começando em 0).
Execução via Linha de Comando
Exemplo de como executar um programa: C:\>programa
Saída Padrão
Em Java, a saída padrão é comumente realizada com: System.out
.
Wrapper Classes (Boxing)
Classes empacotadoras (Wrapper Classes) servem para encapsular um valor de tipo primitivo na forma de um objeto. Esse processo é chamado de boxing e permite a utilização de tipos primitivos em contextos que exigem objetos (tipos de referência), como em coleções.
Parâmetros vs. Argumentos
Para comunicar informações a um método, ele define um parâmetro (uma variável na declaração do método). O código que chama o método passa um argumento (o valor real) para esse parâmetro. Você pode pensar no parâmetro como uma "vaga de estacionamento" e no argumento como o "carro" que a ocupa.
Exemplos de Código em C#
Estruturas de Repetição: For, While e Do-While
For
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
int numero, i, multi;
private void button1_Click(object sender, EventArgs e) {
i = 0;
numero = Convert.ToInt16(textBox1.Text);
listBox1.Items.Clear();
for (i = 0; i <= 10; i++) {
multi = numero * i;
listBox1.Items.Add(i + "X" + numero + "=" + multi);
}
}
}
}
While
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
int numero, i;
private void button1_Click(object sender, EventArgs e) {
i = 0;
listBox1.Items.Clear();
numero = Convert.ToInt16(textBox1.Text);
while (i <= 10) {
listBox1.Items.Add(numero + "X" + i + "=" + i * numero);
i++;
}
}
}
}
Do-While
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
int numero, i;
private void button1_Click(object sender, EventArgs e) {
i = 0;
listBox1.Items.Clear();
numero = Convert.ToInt16(textBox1.Text);
do {
listBox1.Items.Add(numero + "X" + i + "=" + i * numero);
i++;
} while (i <= 10);
}
}
}
Exemplo de Windows Forms: Seleção de Esportes
namespace Esportes {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
groupBox1.Visible = false;
}
private void button1_Click(object sender, EventArgs e) {
if (ckd_musculacao.Checked) {
listBox1.Items.Add(ckd_musculacao.Text);
}
if (ckd_natacao.Checked) {
listBox1.Items.Add(ckd_natacao.Text);
groupBox1.Visible = true;
}
if (ckd_ritmos.Checked) {
listBox1.Items.Add(ckd_ritmos.Text);
}
if (ckd_combat.Checked) {
listBox1.Items.Add(ckd_combat.Text);
}
if (ckd_zumba.Checked) {
listBox1.Items.Add(ckd_zumba.Text);
}
if (ckd_boxe.Checked) {
listBox1.Items.Add(ckd_boxe.Text);
}
if (ckd_abs.Checked) {
listBox1.Items.Add(ckd_abs.Text);
}
if (ckd_step.Checked) {
listBox1.Items.Add(ckd_step.Text);
}
if (ckd_alongamento.Checked) {
listBox1.Items.Add(ckd_alongamento.Text);
}
}
private void btn_limpar_Click(object sender, EventArgs e) {
ckd_musculacao.Checked = false;
ckd_natacao.Checked = false;
ckd_ritmos.Checked = false;
ckd_combat.Checked = false;
ckd_zumba.Checked = false;
ckd_boxe.Checked = false;
ckd_abs.Checked = false;
ckd_step.Checked = false;
ckd_alongamento.Checked = false;
listBox1.Items.Clear();
textBox1.Text = "";
radioButton1.Checked = false;
radioButton2.Checked = false;
radioButton3.Checked = false;
groupBox1.Visible = false;
}
private void groupBox1_Enter(object sender, EventArgs e) {}
private void btn_ok_Click(object sender, EventArgs e) {
if (radioButton1.Checked) {
textBox1.Text = radioButton1.Text;
}
if (radioButton2.Checked) {
textBox1.Text = radioButton2.Text;
}
if (radioButton3.Checked) {
textBox1.Text = radioButton3.Text;
}
}
}
}
Exemplo de Windows Forms: Soma de Números
namespace Aula21._10._2 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
public string x;
public string y;
public double res;
private void button1_Click(object sender, EventArgs e) {
x = textBox1.Text;
y = textBox2.Text;
res = Convert.ToDouble(x) + Convert.ToDouble(y);
this.Hide();
Form2 form2 = new Form2(res);
form2.Show();
}
private void Form1_Load(object sender, EventArgs e) {}
}
}
Exemplo de Windows Forms: PictureBox e OpenFileDialog
namespace Aula2810._2 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
OpenFileDialog arquivo = new OpenFileDialog();
public string nome;
public int idade;
public string telefone;
private void button2_Click(object sender, EventArgs e) {
arquivo.Filter = "jpg|*.jpg";
if (arquivo.ShowDialog() == DialogResult.OK) {
pictureBox1.ImageLocation = arquivo.FileName;
}
}
private void button1_Click(object sender, EventArgs e) {
nome = textBox1.Text;
idade = Convert.ToInt32(numericUpDown1.Value);
telefone = maskedTextBox1.Text;
Form2 form2 = new Form2(nome, idade, telefone, arquivo.FileName);
form2.Show();
this.Hide();
}
}
}