-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
121 lines (107 loc) · 4.22 KB
/
Program.cs
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using Newtonsoft.Json;
using System;
namespace Polimorfismo
{
public class Program
{
public static void Main(string[] args)
{
Carro carro = new Carro();
carro.Ano = 2019;
carro.Modelo = "Passat";
carro.Cor = "Branca";
carro.Km = 100000;
carro.CapacidadePassageiro = 5;
carro.Revisao();
Console.WriteLine(JsonConvert.SerializeObject(carro));
Console.WriteLine($"Revisão de Número :{carro.CalcularNumeroRevisao(carro.Km)}");
Console.WriteLine("-------------------------------------------------------");
Caminhao caminhao = new Caminhao();
caminhao.Ano = 2000;
caminhao.Modelo = "Mercedez";
caminhao.Cor = "Azul";
caminhao.Km = 170000;
caminhao.CapacidadeCarga = 10;
caminhao.Revisao();
Console.WriteLine(JsonConvert.SerializeObject(caminhao));
Console.WriteLine($"Revisão de Número :{caminhao.CalcularNumeroRevisao(carro.Km)}");
Console.WriteLine("-------------------------------------------------------");
Bicicleta bicicleta = new Bicicleta();
bicicleta.Ano = 2019;
bicicleta.Modelo = "Caloi";
bicicleta.Cor = "Branca";
Console.WriteLine(JsonConvert.SerializeObject(bicicleta));
Console.WriteLine("-------------------------------------------------------");
}
}
/*
Classe BASE Abstract(Não podem ser instanciadas), permite que você crie classes e membros de classe que estão incompletos e
***********************devem ser implementados em uma classe derivada**************************
* Neste caso, temos as propriedades (ano,cor, km e modelo) que as classes derivadas vão herdar
* e os métodos Revisao('Não obrigatório implementar') e CalcularNumeroRevisao(É obrigatório implementar)
*
*///
public abstract class VeiculoBase
{
public int Ano { get; set; }
public string Cor { get; set; }
public string Modelo { get; set; }
public int Km { get; set; }
//Metodo vitual que pode ser substituído dentro das classes derivadas.
public virtual void Revisao()
{
Console.WriteLine("Veiculo Não faz Revisão");
}
//Metodo abstract de implementação obrigatório dentro das classes derivadas.
public abstract int CalcularNumeroRevisao(int i);
}
/*
* Classe DERIVADA, herda todos os métodos e propriedades a classe base.
* Pode alterar o comportamento de métodos virtuais, e devem implementar comportamento para os métodos abstract.
* Classe SEALED ninguém poderá derivar dela.
*/
public sealed class Carro : VeiculoBase
{
public int CapacidadePassageiro { get; set; }
/*Substituindo o metodo da classe BASE*/
public override void Revisao()
{
Console.WriteLine("Carro faz Revisão");
}
public override int CalcularNumeroRevisao(int i)
{
return i / 10000;
}
}
/*
* Classe DERIVADA, herda todos os métodos e propriedades a classe base.
* Pode alterar o comportamento de métodos virtuais, e devem implementar comportamento para os métodos abstract.
* classe SEALED ninguém poderá derivar dela.
*/
public sealed class Caminhao : VeiculoBase
{
public int CapacidadeCarga { get; set; }
/*Substituindo o metodo da classe BASE*/
public override void Revisao()
{
Console.WriteLine("Caminhao faz Revisão");
}
/**/
public override int CalcularNumeroRevisao(int i)
{
return i / 15000;
}
}
/*
* Classe DERIVADA, herda todos os métodos e propriedades a classe base.
* Pode alterar o comportamento de métodos virtuais, e devem implementar comportamento para os métodos abstract.
* classe SEALED ninguém poderá derivar dela.
*/
public sealed class Bicicleta : VeiculoBase
{
public override int CalcularNumeroRevisao(int i)
{
throw new NotImplementedException();
}
}
}