Vou fornecer alguns exemplos de código em C# que utilizam operadores aritméticos, relacionais e lógicos, juntamente com explicações para cada tipo de operador.
Operadores Aritméticos:
-
Adição (+):
int resultado = 5 + 3;
Neste exemplo, o operador de adição
+
é usado para somar os valores 5 e 3, resultando em8
. -
Subtração (-):
int resultado = 10 - 7;
O operador de subtração
-
é usado para subtrair 7 de 10, resultando em3
. -
Multiplicação (*):
int resultado = 4 * 6;
O operador de multiplicação
*
é usado para multiplicar os valores 4 e 6, resultando em24
. -
Divisão (/):
double resultado = 20.0 / 5.0;
O operador de divisão
/
é usado para dividir 20.0 por 5.0, resultando em4.0
. Note que o resultado é um número de ponto flutuante devido às operações com números decimais.
Operadores Relacionais:
-
Igual (==):
bool igual = (5 == 5);
O operador
==
verifica se os dois valores são iguais. Neste caso,igual
serátrue
porque 5 é igual a 5. -
Diferente (!=):
bool diferente = (6 != 3);
O operador
!=
verifica se os dois valores são diferentes. Neste caso,diferente
serátrue
porque 6 não é igual a 3.
Operadores Lógicos:
-
E Lógico (&&):
bool condicao = (true && false);
O operador
&&
realiza uma operação de E lógico.condicao
seráfalse
porque ambos os lados da expressão não são verdadeiros. -
OU Lógico (||):
bool condicao = (true || false);
O operador
||
realiza uma operação de OU lógico.condicao
serátrue
porque pelo menos um dos lados da expressão é verdadeiro (no caso, o lado esquerdo). -
NÃO Lógico (!):
bool negacao = !true;
O operador
!
realiza uma negação lógica.negacao
seráfalse
porque negamos o valor verdadeiro.
Esses são alguns exemplos simples de como os operadores aritméticos, relacionais e lógicos são utilizados em C#. Eles são fundamentais para criar expressões condicionais e realizar cálculos em programas C#.
Em C#, existem vários tipos primitivos de variáveis, cada um com um propósito específico. Aqui estão alguns exemplos dos tipos primitivos mais comuns, juntamente com explicações para cada um deles:
-
int (inteiro):
int idade = 25;
O tipo
int
é usado para armazenar números inteiros, positivos ou negativos, sem casas decimais. No exemplo acima,idade
é uma variável do tipoint
que armazena o valor 25. -
double (ponto flutuante de precisão dupla):
double altura = 1.75;
O tipo
double
é usado para armazenar números de ponto flutuante com alta precisão, permitindo casas decimais. No exemplo,altura
é uma variável do tipodouble
que armazena o valor 1.75. -
char (caractere):
char letra = 'A';
O tipo
char
é usado para armazenar um único caractere. No exemplo,letra
é uma variável do tipochar
que armazena o caractere 'A'. -
bool (booleano):
bool estaChovendo = false;
O tipo
bool
é usado para representar valores lógicos, ou seja, verdadeiro (true
) ou falso (false
). No exemplo,estaChovendo
é uma variável do tipobool
que armazena o valorfalse
. -
string (cadeia de caracteres):
string nome = "João";
O tipo
string
é usado para armazenar texto como uma sequência de caracteres. No exemplo,nome
é uma variável do tipostring
que armazena o texto "João". -
byte (byte):
byte valor = 100;
O tipo
byte
é usado para armazenar números inteiros de 0 a 255, ocupando apenas 8 bits de memória. No exemplo,valor
é uma variável do tipobyte
que armazena o valor 100. -
short (inteiro curto):
short temperatura = -10;
O tipo
short
é usado para armazenar números inteiros em um intervalo maior quebyte
e menor queint
. No exemplo,temperatura
é uma variável do tiposhort
que armazena o valor -10. -
long (inteiro longo):
long populacaoMundial = 7800000000;
O tipo
long
é usado para armazenar números inteiros longos, frequentemente usados para valores muito grandes. No exemplo,populacaoMundial
é uma variável do tipolong
que armazena a população mundial atual.
Esses são alguns dos tipos primitivos de variáveis em C#. Cada um deles serve a um propósito específico e é importante escolher o tipo adequado com base nos requisitos do seu programa para otimizar o uso de memória e garantir a precisão dos dados.
Em C#, variáveis simples são amplamente usadas para armazenar informações, ponteiros são menos comuns devido à segurança e ao gerenciamento de memória automatizado da linguagem, e entrada de dados é frequentemente feita com a ajuda da classe Console
. Aqui estão alguns exemplos que envolvem variáveis simples, entrada de dados e uma breve menção aos ponteiros:
Exemplo 1: Variáveis Simples e Entrada de Dados
using System;
class Program
{
static void Main()
{
// Declaração de variáveis simples
string nome;
int idade;
// Solicita ao usuário para inserir seu nome
Console.Write("Digite seu nome: ");
nome = Console.ReadLine();
// Solicita ao usuário para inserir sua idade
Console.Write("Digite sua idade: ");
idade = Convert.ToInt32(Console.ReadLine());
// Exibe as informações fornecidas pelo usuário
Console.WriteLine("Nome: " + nome);
Console.WriteLine("Idade: " + idade);
// Aguarda a pressão de uma tecla antes de sair
Console.ReadKey();
}
}
Neste exemplo, declaramos variáveis simples nome
e idade
para armazenar informações fornecidas pelo usuário. Usamos a classe Console
para receber dados de entrada do usuário e exibir informações na saída.
Exemplo 2: Uso de Ponteiros (Pouco Comum em C#)
using System;
class Program
{
static unsafe void Main()
{
int numero = 42;
int* ponteiro = №
Console.WriteLine("Valor de numero: " + numero);
Console.WriteLine("Endereço de memória de numero: " + (long)ponteiro);
// Modificando o valor usando ponteiro
*ponteiro = 100;
Console.WriteLine("Novo valor de numero: " + numero);
// Aguarda a pressão de uma tecla antes de sair
Console.ReadKey();
}
}
Neste exemplo, usamos um ponteiro (int* ponteiro
) para acessar o endereço de memória de uma variável numero
. Note que o uso de ponteiros em C# geralmente é restrito e requer a declaração do método como "unsafe". Ponteiros são mais comuns em linguagens de baixo nível como C e C++ e não são recomendados para uso geral em C# devido à segurança e ao gerenciamento de memória automáticos.
A entrada de dados é feita através do Console.ReadLine()
, e a saída é exibida no console usando Console.WriteLine()
. Certifique-se de entender a importância da segurança ao lidar com ponteiros, pois seu uso incorreto pode causar problemas de segurança e acesso à memória inválida.
A estrutura de controle if-else
é uma parte fundamental da programação em C# (e em muitas outras linguagens de programação). Ela permite que você tome decisões no seu código com base em condições lógicas. Aqui está a sintaxe básica da estrutura if-else
em C#:
if (condição)
{
// Código a ser executado se a condição for verdadeira
}
else
{
// Código a ser executado se a condição for falsa
}
Aqui está uma explicação de como a estrutura if-else
funciona:
-
condição
: Uma expressão lógica que é avaliada como verdadeira ou falsa. Se a condição for verdadeira, o código dentro do blocoif
será executado. Se for falsa, o código dentro do blocoelse
(opcional) será executado. -
if
: O bloco de código dentro doif
é executado apenas se a condição for verdadeira. -
else
: O bloco de código dentro doelse
é executado apenas se a condição for falsa. Oelse
é opcional, e você pode usar apenas umif
sem umelse
se desejar.
Aqui estão alguns exemplos de uso da estrutura if-else
em C#:
Exemplo 1: Verificação de Idade
int idade = 18;
if (idade >= 18)
{
Console.WriteLine("Você é maior de idade.");
}
else
{
Console.WriteLine("Você é menor de idade.");
}
Neste exemplo, a condição verifica se a idade é maior ou igual a 18. Se for verdadeira, a mensagem "Você é maior de idade" é exibida; caso contrário, a mensagem "Você é menor de idade" é exibida.
Exemplo 2: Classificação de Números
int numero = 7;
if (numero > 0)
{
Console.WriteLine("O número é positivo.");
}
else if (numero < 0)
{
Console.WriteLine("O número é negativo.");
}
else
{
Console.WriteLine("O número é zero.");
}
Neste exemplo, usamos if
, else if
e else
para classificar um número como positivo, negativo ou zero, com base na condição.
A estrutura if-else
é uma maneira poderosa de controlar o fluxo do seu programa, permitindo que você execute diferentes blocos de código com base nas condições especificadas. Você também pode aninhar várias instruções if-else
para criar lógica de decisão mais complexa.
A estrutura if-else if
(ou else if
encadeado) é uma extensão da estrutura if-else
que permite testar várias condições em sequência. Ela é usada quando você tem várias condições a serem verificadas e deseja executar o bloco de código associado à primeira condição verdadeira encontrada. Aqui está a sintaxe da estrutura if-else if
em C#:
if (condição1)
{
// Código a ser executado se a condição1 for verdadeira
}
else if (condição2)
{
// Código a ser executado se a condição2 for verdadeira
}
else if (condição3)
{
// Código a ser executado se a condição3 for verdadeira
}
// ...
else
{
// Código a ser executado se nenhuma das condições anteriores for verdadeira
}
Aqui estão algumas explicações sobre como a estrutura if-else if
funciona:
-
Você começa com um
if
para verificar a primeira condição. Se essa condição for verdadeira, o bloco de código associado a essa condição será executado, e o restante do blocoif-else if
será ignorado. -
Se a primeira condição não for verdadeira, o programa verificará a próxima condição no
else if
subsequente. Se essa segunda condição for verdadeira, o bloco de código associado a ela será executado. -
Esse processo continua até que uma condição verdadeira seja encontrada ou até que o bloco
else
final seja executado caso nenhuma das condições seja verdadeira. -
O bloco
else
é opcional e é executado se nenhuma das condições anteriores for verdadeira.
Aqui está um exemplo de uso da estrutura if-else if
em C#:
int nota = 85;
if (nota >= 90)
{
Console.WriteLine("Aprovado com nota A");
}
else if (nota >= 80)
{
Console.WriteLine("Aprovado com nota B");
}
else if (nota >= 70)
{
Console.WriteLine("Aprovado com nota C");
}
else if (nota >= 60)
{
Console.WriteLine("Aprovado com nota D");
}
else
{
Console.WriteLine("Reprovado");
}
Neste exemplo, estamos avaliando a nota de um aluno e imprimindo a classificação com base nas faixas de notas especificadas. A primeira condição verdadeira encontrada determina a classificação e encerra a verificação. Se nenhuma das condições for verdadeira, o bloco else
será executado, indicando que o aluno foi reprovado.
A estrutura if-else if
é útil quando você precisa de lógica de decisão mais complexa que envolve várias condições exclusivas. Ela permite que você especifique ações diferentes para cenários diferentes.
A estrutura switch
é uma estrutura de controle de decisão em C# que permite que você avalie uma expressão e execute diferentes blocos de código com base no valor dessa expressão. Ela é especialmente útil quando você deseja comparar o valor de uma variável com várias opções e tomar ações diferentes para cada opção. Aqui está a sintaxe básica da estrutura switch
em C#:
switch (expressão)
{
case valor1:
// Código a ser executado quando a expressão é igual a valor1
break;
case valor2:
// Código a ser executado quando a expressão é igual a valor2
break;
// ...
default:
// Código a ser executado se a expressão não corresponder a nenhum dos casos anteriores
break;
}
Aqui estão algumas explicações sobre como a estrutura switch
funciona:
-
expressão
: É uma expressão que é avaliada e comparada com os valores especificados nos casoscase
. -
case valor1
: Cadacase
define um valor que aexpressão
pode assumir. Se aexpressão
for igual avalor1
, o bloco de código associado a essecase
será executado. Obreak
é usado para sair doswitch
após a execução do bloco de código docase
. -
default
: Odefault
é opcional e é usado quando nenhum doscase
corresponde ao valor daexpressão
. O bloco de código associado aodefault
será executado.
Aqui está um exemplo de uso da estrutura switch
em C#:
int diaDaSemana = 3;
string mensagem;
switch (diaDaSemana)
{
case 1:
mensagem = "Segunda-feira";
break;
case 2:
mensagem = "Terça-feira";
break;
case 3:
mensagem = "Quarta-feira";
break;
case 4:
mensagem = "Quinta-feira";
break;
case 5:
mensagem = "Sexta-feira";
break;
default:
mensagem = "Fim de semana";
break;
}
Console.WriteLine("Hoje é " + mensagem);
Neste exemplo, avaliamos o valor da variável diaDaSemana
usando a estrutura switch
e definimos uma mensagem com base no dia da semana. O default
é usado para lidar com casos que não correspondem a nenhum dos valores dos case
.
A estrutura switch
é útil quando você tem uma variável com várias opções e deseja evitar uma série de instruções if-else if
. Ela torna o código mais legível e eficiente em situações onde você precisa fazer múltiplas comparações de igualdade.
A estrutura for
é uma estrutura de controle de repetição em C# que permite que você execute um bloco de código repetidamente por um número específico de vezes. É uma das estruturas mais utilizadas para criar loops em programas. Aqui está a sintaxe básica da estrutura for
em C#:
for (inicialização; condição; incremento)
{
// Código a ser executado repetidamente
}
Aqui estão as partes fundamentais da estrutura for
:
-
inicialização
: É onde você inicializa uma variável de controle ou define as condições iniciais necessárias. Isso é executado apenas uma vez no início do loop. -
condição
: É uma expressão booleana que é avaliada antes de cada iteração do loop. Se a condição for verdadeira, o código dentro do loop é executado; caso contrário, o loop é encerrado. -
incremento
: Geralmente, é uma instrução que altera o valor da variável de controle do loop de uma forma que, eventualmente, faça com que a condição do loop seja falsa. Isso é executado após cada iteração do loop.
Aqui está um exemplo simples de uso da estrutura for
:
for (int i = 1; i <= 5; i++)
{
Console.WriteLine("Número: " + i);
}
Neste exemplo, a estrutura for
cria um loop que imprime os números de 1 a 5. Aqui está como funciona o loop:
-
int i = 1;
: Inicializamos a variável de controlei
com o valor 1 no início do loop. -
i <= 5;
: A condição verifica sei
é menor ou igual a 5. Enquanto essa condição for verdadeira, o loop continuará a ser executado. -
i++
: Após cada iteração do loop, incrementamosi
em 1, para que ele aumente de valor a cada passagem pelo loop.
O resultado será:
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5
A estrutura for
é muito útil quando você precisa realizar uma ação repetidamente por um número específico de vezes, como percorrer elementos em uma matriz, gerar uma sequência de números, ou realizar qualquer tipo de tarefa iterativa. Ela oferece controle preciso sobre o número de iterações e é uma das construções de loop mais comuns em C#.
A estrutura while
é uma das estruturas de controle de repetição em C# que permite que você execute um bloco de código repetidamente enquanto uma condição específica for verdadeira. Diferentemente da estrutura for
, o while
não tem uma contagem explícita de iterações; ele continuará executando o código dentro dele até que a condição se torne falsa. Aqui está a sintaxe básica da estrutura while
em C#:
while (condição)
{
// Código a ser executado repetidamente enquanto a condição for verdadeira
}
Aqui está uma explicação do funcionamento da estrutura while
:
condição
: É uma expressão booleana que é avaliada antes de cada iteração do loop. Enquanto a condição for verdadeira, o código dentro do loop é executado. Quando a condição se tornar falsa, o loop é encerrado, e o controle é transferido para a próxima instrução após owhile
.
Aqui está um exemplo simples de uso da estrutura while
:
int contador = 1;
while (contador <= 5)
{
Console.WriteLine("Número: " + contador);
contador++;
}
Neste exemplo, o while
cria um loop que imprime os números de 1 a 5. Aqui está como funciona o loop:
-
contador = 1;
: Inicializamos a variávelcontador
com o valor 1 no início do loop. -
contador <= 5;
: A condição verifica secontador
é menor ou igual a 5. Enquanto essa condição for verdadeira, o código dentro do loop será executado. -
contador++;
: Após cada iteração do loop, incrementamoscontador
em 1 para aumentar seu valor.
O resultado será:
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5
A estrutura while
é útil quando você precisa executar um bloco de código repetidamente com base em uma condição que pode não ser conhecida com antecedência. Você deve ter cuidado ao usar o while
para evitar criar loops infinitos, certificando-se de que a condição se torne falsa em algum ponto durante a execução do loop.
A estrutura do-while
é outra estrutura de controle de repetição em C# que permite que você execute um bloco de código repetidamente enquanto uma condição específica for verdadeira, assim como a estrutura while
. No entanto, a diferença chave entre as duas é que a estrutura do-while
garante que o bloco de código seja executado pelo menos uma vez, mesmo que a condição seja falsa desde o início. Aqui está a sintaxe básica da estrutura do-while
em C#:
do
{
// Código a ser executado repetidamente
} while (condição);
Aqui estão algumas explicações sobre como a estrutura do-while
funciona:
-
O código dentro do bloco
do
é executado primeiro, independentemente da condição. -
Após a execução do bloco
do
, a condição especificada nowhile
é avaliada. -
Se a condição for verdadeira, o bloco
do
será executado novamente, e esse processo continuará enquanto a condição permanecer verdadeira. -
Se a condição for falsa desde o início, o bloco
do
ainda será executado pelo menos uma vez antes que a condição seja verificada.
Aqui está um exemplo de uso da estrutura do-while
:
int contador = 1;
do
{
Console.WriteLine("Número: " + contador);
contador++;
} while (contador <= 5);
Neste exemplo, o do-while
cria um loop que imprime os números de 1 a 5. O loop sempre começa com a execução do bloco de código dentro do do
, independentemente da condição. Aqui está como funciona o loop:
-
contador = 1;
: Inicializamos a variávelcontador
com o valor 1 antes da primeira execução. -
A mensagem é impressa com o valor atual de
contador
. -
contador++
: Após cada iteração do loop, incrementamoscontador
em 1 para aumentar seu valor. -
contador <= 5;
: A condição é verificada após a primeira execução do blocodo
, e o loop continuará a ser executado enquanto a condição for verdadeira.
O resultado será:
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5
A estrutura do-while
é útil quando você deseja garantir que um bloco de código seja executado pelo menos uma vez, independentemente da condição. É especialmente útil quando a avaliação da condição depende de algum processamento interno no bloco do
.
Em C#, existem vários tipos de variáveis compostas, também conhecidas como tipos de dados compostos. Esses tipos permitem que você armazene coleções de valores ou objetos de maneira organizada. Aqui estão alguns dos tipos de variáveis compostas mais comuns em C#, com exemplos de código e explicações para cada um deles:
Um array é uma coleção de elementos do mesmo tipo, acessados por um índice numérico.
Exemplo de declaração e inicialização de um array de inteiros:
int[] numeros = new int[] { 1, 2, 3, 4, 5 };
Explicação: Neste exemplo, criamos um array de inteiros chamado numeros
que contém cinco elementos.
Uma lista é uma coleção dinâmica de elementos de qualquer tipo.
Exemplo de uso da classe List
para armazenar strings:
List<string> nomes = new List<string>();
nomes.Add("Alice");
nomes.Add("Bob");
Explicação: Aqui, usamos uma lista para armazenar nomes de pessoas. A lista é dinâmica, o que significa que podemos adicionar ou remover elementos conforme necessário.
Um dicionário é uma coleção de pares chave-valor, onde cada chave está associada a um valor.
Exemplo de uso da classe Dictionary
para armazenar informações de estudantes:
Dictionary<string, int> notas = new Dictionary<string, int>();
notas["Alice"] = 95;
notas["Bob"] = 87;
Explicação: Criamos um dicionário onde as chaves são os nomes dos estudantes e os valores são suas notas. Isso permite que você associe informações relacionadas.
Uma matriz multidimensional é uma coleção de elementos organizados em várias dimensões.
Exemplo de uma matriz bidimensional:
int[,] matriz = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
Explicação: Neste exemplo, criamos uma matriz 3x3 de inteiros. É semelhante a uma tabela com linhas e colunas.
Uma tupla é uma estrutura de dados que pode conter uma combinação heterogênea de elementos.
Exemplo de uma tupla que armazena informações de um ponto em um plano:
(int, int) ponto = (3, 4);
Explicação: Aqui, criamos uma tupla que contém dois inteiros, representando as coordenadas x e y de um ponto.
Uma classe é uma estrutura de dados que define um objeto com atributos e métodos.
Exemplo de uma classe que representa uma pessoa:
class Pessoa
{
public string Nome { get; set; }
public int Idade { get; set; }
}
Explicação: Criamos uma classe chamada Pessoa
que tem propriedades Nome e Idade. As classes são usadas para criar objetos com comportamentos e propriedades personalizadas.
Uma estrutura é semelhante a uma classe, mas é um tipo de valor (value type).
Exemplo de uma estrutura que representa um ponto:
struct Ponto
{
public int X { get; set; }
public int Y { get; set; }
}
Explicação: Esta estrutura Ponto
é semelhante à classe Pessoa
, mas é um tipo de valor, o que significa que é copiada diretamente quando atribuída a outra variável.
Esses são alguns dos tipos de variáveis compostas em C# que permitem armazenar e organizar dados de maneira mais complexa e estruturada. Cada tipo tem seus próprios usos e características específicas.
As funções são blocos de código reutilizáveis em C# que realizam tarefas específicas. Elas são uma parte fundamental da programação modular, permitindo dividir um programa em partes menores e mais gerenciáveis. Aqui está uma visão geral das funções em C#:
Declaração de Função:
A declaração de uma função em C# inclui os seguintes elementos:
tipo_retorno NomeDaFunção(parâmetros)
{
// Código da função
return valor_retorno; // (opcional)
}
-
tipo_retorno
: É o tipo de dado que a função retorna. Pode ser um tipo primitivo (comoint
,string
,bool
, etc.) ou um tipo de objeto. -
NomeDaFunção
: É o nome da função, que deve ser único no escopo em que a função é definida. -
parâmetros
: São variáveis usadas para receber valores de entrada na função. Eles são opcionais e podem ser de vários tipos e quantidades. -
return valor_retorno
: É uma instrução que retorna um valor da função. Esta parte é opcional e depende do tipo de retorno especificado. Funções que não retornam um valor (tipovoid
) não usam oreturn
.
Exemplo de Declaração de Função:
// Função que soma dois números inteiros
int Soma(int a, int b)
{
return a + b;
}
Chamada de Função:
Para usar uma função, você a chama em algum lugar no seu código, passando os argumentos necessários (se houver). A chamada de função geralmente é feita pelo nome da função seguido de parênteses.
Exemplo de Chamada de Função:
int resultado = Soma(5, 3);
Neste exemplo, chamamos a função Soma
com os argumentos 5 e 3, e ela retorna o valor 8, que é atribuído à variável resultado
.
Funções com Retorno de Valor:
Funções que retornam um valor (ou seja, não têm um tipo de retorno void
) devem usar a instrução return
para retornar um valor correspondente ao tipo de retorno.
Exemplo de Função com Retorno:
int Multiplica(int a, int b)
{
return a * b;
}
Funções sem Retorno (void):
Funções que não retornam um valor têm um tipo de retorno void
. Elas executam uma tarefa, mas não produzem um resultado que possa ser atribuído a uma variável.
Exemplo de Função sem Retorno (void):
void ExibeMensagem(string mensagem)
{
Console.WriteLine(mensagem);
}
As funções são uma maneira eficaz de organizar e reutilizar código em C#. Elas melhoram a legibilidade do código, facilitam a manutenção e promovem a modularidade do programa. Você pode criar funções para realizar tarefas específicas e usá-las em diferentes partes do seu programa conforme necessário.
A Programação Orientada a Objetos (POO) tem quatro pilares fundamentais que são princípios-chave para o design de classes e objetos em um programa. Vou fornecer um exemplo para cada um desses pilares e explicar como cada um deles é aplicado:
-
Encapsulamento:
O encapsulamento é o princípio de esconder os detalhes de implementação de uma classe e fornecer uma interface pública para interagir com ela. Isso ajuda a proteger os dados e a funcionalidade da classe, permitindo um controle mais eficiente sobre o acesso a eles.
Exemplo:
public class ContaBancaria { private double saldo; public void Depositar(double valor) { if (valor > 0) saldo += valor; } public void Sacar(double valor) { if (valor > 0 && valor <= saldo) saldo -= valor; } public double ConsultarSaldo() { return saldo; } }
Neste exemplo, a classe
ContaBancaria
encapsula o saldo e fornece métodos públicos (Depositar
,Sacar
eConsultarSaldo
) para interagir com o saldo. O saldo é privado, o que significa que não pode ser acessado diretamente de fora da classe. -
Abstração:
A abstração é o processo de simplificação de objetos complexos, modelando-os apenas com as informações essenciais para o programa. Isso ajuda a ocultar detalhes não essenciais e a concentrar-se nos aspectos relevantes do objeto.
Exemplo:
public abstract class Animal { public abstract void EmitirSom(); }
Neste exemplo, a classe abstrata
Animal
define uma abstração para animais em geral. Ela possui um método abstratoEmitirSom
que representa um comportamento comum a todos os animais, mas não fornece uma implementação específica. Classes derivadas, comoCachorro
eGato
, devem fornecer suas próprias implementações desse método. -
Herança:
A herança permite criar uma nova classe com base em uma classe existente, reutilizando seus atributos e métodos. Isso promove a reutilização de código e permite criar hierarquias de classes.
Exemplo:
public class Veiculo { public string Marca { get; set; } public string Modelo { get; set; } } public class Carro : Veiculo { public int Portas { get; set; } }
Neste exemplo, a classe
Carro
herda os atributosMarca
eModelo
da classeVeiculo
. Isso significa que um objetoCarro
possui todos os atributos de umVeiculo
, além de seus próprios atributos específicos. -
Polimorfismo:
O polimorfismo permite que objetos de classes diferentes respondam de maneira diferente ao mesmo método. Isso é alcançado por meio de herança e interfaces, permitindo que um método seja implementado de várias maneiras em classes diferentes.
Exemplo:
public interface IAnimal { void EmitirSom(); } public class Cachorro : IAnimal { public void EmitirSom() { Console.WriteLine("O cachorro late."); } } public class Gato : IAnimal { public void EmitirSom() { Console.WriteLine("O gato mia."); } }
Neste exemplo, ambas as classes
Cachorro
eGato
implementam a interfaceIAnimal
com um métodoEmitirSom
, mas cada uma delas fornece sua própria implementação específica. Isso permite que objetos de ambas as classes sejam tratados genericamente comoIAnimal
, independentemente de serem cachorros ou gatos, e respondam de maneira adequada quando o métodoEmitirSom
é chamado.
Esses quatro pilares da POO são fundamentais para criar sistemas de software bem estruturados, flexíveis e fáceis de manter, promovendo a reutilização de código e a organização eficaz dos elementos do programa.