static void MostrarOQueEhEncapsulamento() { tela.DesenharLinha(); tela.EscreverNaCor("4) O que é encapsulamento?", Tela.corInformacaoDestaque); tela.PularLinha(); tela.Escrever("Encapsulamento é a técnica que faz com que detalhes internos do funcionamento dos métodos de uma classe " + "permaneçam ocultos para os objetos. Por conta dessa técnica, o conhecimento a respeito da implementação interna da classe " + "é desnecessário do ponto de vista do objeto, uma vez que isso passa a ser responsabilidade dos métodos internos da classe."); // Fonte: https://www.devmedia.com.br/conceitos-encapsulamento-programacao-orientada-a-objetos/18702 tela.PularLinha(); tela.Escrever("No exemplo abaixo, a classe \"Conta\" possui o atributo \"saldo\" o qual não pode ser modificado diretamente, " + "por estar encapsulado com visibilidade \"private\", sendo possível modificar o saldo apenas pelos métodos \"Sacar\" e \"Depositar\"."); tela.PularLinha(); var conta = new Conta(); tela.EscreverNaMesmaLinha("Criada a conta, saldo atual: "); tela.EscreverNaMesmaLinhaENaCor(conta.Saldo.ToString(), Tela.corResultado); tela.PularLinha(); tela.Escrever("É possível ler o atributo saldo pois o mesmo se encontra public para leitura."); tela.PularLinha(); tela.Escrever("Não é possivel atribuir o valor ao atributo saldo diretamente, ocorre um erro de compilação, pelo motivo de estar " + "encapsulado como private e ser acessível somente dentro da classe."); tela.EscreverNaCor("conta.saldo = 10;", Tela.corErro); tela.PularLinha(); tela.Escrever("Modificando o atributo saldo pelo método Depositar (100)"); conta.Depositar(100); tela.Escrever("Modificando o atributo saldo pelo método Sacar (50)"); conta.Sacar(50); tela.EscreverNaMesmaLinha($"Saldo após lançamentos: "); tela.EscreverNaMesmaLinhaENaCor(conta.Saldo.ToString(), Tela.corResultado); tela.PularLinha(2); }