Para as contas, o desafio foi simples: eu só tive que alterar o final, colocando get e set para cada um dos antigos atributos, para transformá-los em propriedades. Além disso, como boa prática, eu alterei do Camel Case para Pascal Case.
Conta.cs
public class Conta {
public int Id {get; set;}
public string? Titular {get; set;}
public decimal Saldo {get; set;}
public string? Senha {get; set;}
public void ExibirInformacoes() {
Console.WriteLine($"ID da conta: {Id}");
Console.WriteLine($"Nome do Titular: {Titular}");
Console.WriteLine($"Saldo do Titular: R${Saldo}");
Console.WriteLine ($"Senha do titular: {Senha}");
}
}
Chegando no Carro, a situação ficou um pouco mais complexa, porque eu não sabia exatamente como definir uma condição válida. No entanto, lendo a documentação, acabei compreendendo alguns padrões do C# em relação ao uso de get e set. Analisei as diferenças entre versões e percebi que, na minha, eu não poderia colocar, por exemplo, apenas {get; set {bloco}}, porque isso gerava um erro relacionado a uma keyword, que só foi resolvido em versões superiores. Por isso, trabalhei conforme essa limitação.
Todavia, no início ainda foi complicado, porque eu não sabia como aplicaria o get para retornar o valor da variável, o que estava gerando erros. Só depois descobri o conceito de campos de acesso privados para lidar com propriedades nesse tipo de situação. Assim, defini um padrão para quando ocorresse um erro no set, sendo esse padrão o valor 0. Ainda faltava, porém, resolver o problema final, que estava relacionado à descrição, que deveria variar. Inicialmente, pensei que o trabalho deveria ser feito no set, mas depois entendi e assimilei que deveria trabalhar especificamente no get.
Carro.cs
public class Carro {
private int _AnoCarro = 0; // Campo particular de Acesso;
public int AnoCarro {
get => _AnoCarro;
set {
if (value >= 1960 && value <= 2026) _AnoCarro = value;
}
}
public string? Fabricante {get; set;}
public string? ModeloCarro {get; set;}
public string DescricaoDetalhada {
get {
if (_AnoCarro != 0) return $"O Fabricante é a {Fabricante}, o modelo do carro é {ModeloCarro}, ele foi montado em {AnoCarro}";
else return "Esse carro não pode existir.";
}
}
public void Acelerar() {
Console.WriteLine ("Acelerando...");
Console.ReadKey();
}
public void Frear() {
Console.WriteLine ("Freando...");
Console.ReadKey();
}
public void Buzinar() {
Console.WriteLine ("BEEEEEEEEEEP!!!");
Console.ReadKey();
}
}
Agora, a última atividade foi bem tranquila, já que eu já tinha compreendido os conceitos aprendidos anteriormente.
Produto.cs
public class Produto {
public string? Nome {get; set;}
public string? Marca { get; set; }
private decimal _Preco = 0;
public decimal Preco {
get => _Preco;
set {
if (value > 0) _Preco = value;
}
}
private int _Estoque = 0;
public int Estoque {
get => _Estoque;
set {
if (value > 0) _Estoque = value;
}
}
public void ExibirDetalhes() {
Console.WriteLine ($"Nome: {Nome}");
Console.WriteLine ($"Marca: {Marca}");
Console.WriteLine ($"Preço: R${Preco}");
Console.WriteLine ($"Quantidade: {Estoque}");
}
}
Program.cs
var camisa = new Produto();
camisa.Nome = "Camisa";
camisa.Marca = "Supreme";
camisa.Preco = 200;
camisa.Estoque = 30;
Console.Clear();
camisa.ExibirDetalhes();