fork download
  1. using static System.Console;
  2.  
  3. public class HelloWorld {
  4. public static void Main() {
  5. Veiculo veiculoT = new Veiculo();
  6. WriteLine("veiculoT");
  7. veiculoT.diagnostico();
  8. veiculoT.liga();
  9. veiculoT.teste();
  10. veiculoT.compra();
  11. WriteLine("---------------");
  12. Veiculo carro = new Carro();
  13. WriteLine("carro");
  14. carro.diagnostico();
  15. carro.liga();
  16. carro.teste();
  17. carro.compra();
  18. WriteLine("---------------");
  19. Carro carro2 = new Carro();
  20. WriteLine("carro2");
  21. carro2.diagnostico();
  22. carro2.liga();
  23. carro2.buzina();
  24. carro2.teste();
  25. carro2.compra();
  26. }
  27. }
  28.  
  29. interface IFuncionamento {
  30. void liga();
  31. }
  32.  
  33. static class Funcionamento {
  34. public static void liga(this IFuncionamento func) => WriteLine("Ligou!");
  35. public static void buzina() => WriteLine("Buzinou!");
  36. }
  37.  
  38. static class Testador {
  39. public static void teste(this IFuncionamento veiculo) {
  40. WriteLine("Vai testar");
  41. veiculo.liga();
  42. }
  43. }
  44.  
  45. static class Financeiro {
  46. public static void compra(this Veiculo veiculo) {
  47. WriteLine("Comprou N: " + veiculo.id);
  48. veiculo.diagnostico();
  49. veiculo.liga();
  50. }
  51. }
  52.  
  53. class Veiculo : IFuncionamento {
  54. public int id = 1;
  55. public void diagnostico() {
  56. Funcionamento.liga(this);
  57. Funcionamento.buzina();
  58. liga();
  59. WriteLine("Tudo ok!");
  60. }
  61. public virtual void liga() => Funcionamento.liga(this);
  62. }
  63.  
  64. class Carro : Veiculo {
  65. public override void liga() => WriteLine("Vrom!");
  66. public void buzina() => WriteLine("bi bi!");
  67. }
  68.  
  69. //https://pt.stackoverflow.com/q/121240/101
Success #stdin #stdout 0.02s 15916KB
stdin
Standard input is empty
stdout
veiculoT
Ligou!
Buzinou!
Ligou!
Tudo ok!
Ligou!
Vai testar
Ligou!
Comprou N: 1
Ligou!
Buzinou!
Ligou!
Tudo ok!
Ligou!
---------------
carro
Ligou!
Buzinou!
Vrom!
Tudo ok!
Vrom!
Vai testar
Vrom!
Comprou N: 1
Ligou!
Buzinou!
Vrom!
Tudo ok!
Vrom!
---------------
carro2
Ligou!
Buzinou!
Vrom!
Tudo ok!
Vrom!
bi bi!
Vai testar
Vrom!
Comprou N: 1
Ligou!
Buzinou!
Vrom!
Tudo ok!
Vrom!