-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPerson.cs
More file actions
31 lines (25 loc) · 1.51 KB
/
Person.cs
File metadata and controls
31 lines (25 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace Health;
// Classe base para uma pessoa qualquer
public class Person(IHealthRules rules, double weight, double height)
{
// Campos privados e somente leitura para armazenar as dependências e dados
private readonly IHealthRules _rules = rules; // Injetado pelo contêiner
private readonly double _weight = weight; // Peso em kg, passado manualmente
private readonly double _height = height; // Altura em metros, passado manualmente
// Propriedade pública para acessar o peso
public double Weight => _weight;
// Propriedade pública para acessar a altura
public double Height => _height;
// Propriedade virtual para calcular o IMC
public virtual double IMC => _rules.CalculateIMC(_weight, _height);
// "virtual" permite que subclasses (ex.: Athlete) ajustem o cálculo
// Método simples para retornar o nome
public string GetName(string firstName) => firstName;
// Comentário: Person depende de IHealthRules, que é injetado via contêiner.
// Os parâmetros weight e height são passados manualmente via factory,
// pois o contêiner não pode resolvê-los diretamente em um console.
// SOLID - S (Single Responsibility): Representa uma pessoa e delega o cálculo do IMC.
// SOLID - O (Open/Closed): Aberta para extensão via herança (ex.: Athlete).
// SOLID - L (Liskov Substitution): Pode ser substituída por subclasses como Athlete.
// SOLID - D (Dependency Inversion): Depende da abstração IHealthRules, não de HealthRules.
}