Kürzlich hatte ich einen praktischen Test für Software-Entwickler Position, in diesem Test stellten sie folgende Frage.OOP Ansatz für das Triangle Check Szenario
mir eine Funktion schreiben, die für die Längen der Seiten eines Dreiecks, drei ganzzahlige Eingänge empfangen und gibt einen von vier Werten den Dreieck-Typen (1 = scalene, 2 = gleichschenklig, 3 = gleichseitig, um zu bestimmen, 4 = Fehler)
auch fragte sie enums
und OOP
Ansatz für diese Lösung zu verwenden,
aber ohne OOP
Ansatz baute ich auf diese Weise auf folgende
using System;
using System.Linq;
namespace triangleSolution
{
class Program
{
static void Main(string[] args)
{
int[] values = new int[3];
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("Please enter side " + i +" value");
values[i - 1] = Int32.Parse(Console.ReadLine());
}
Console.WriteLine(GetTriangleType(values[0], values[1], values[2]));
Console.WriteLine();
}
public enum TriangleType
{
Scalene = 1, // no two sides are the same length
Isosceles = 2, // two sides are the same length and one differs
Equilateral = 3, // all sides are the same length
Error = 4 // inputs can't produce a triangle
}
public static TriangleType GetTriangleType(int a, int b, int c)
{
// There should also be a side length check
if (a <= 0 || b <= 0 || c <= 0)
{
return TriangleType.Error;
}
if (a == b && a == c) // These could also be their own methods
{
return TriangleType.Equilateral;
}
else if (a == b || a == c || b == c)
{
return TriangleType.Isosceles;
}
else
{
return TriangleType.Scalene;
}
}
}
}
Ich wünsche obige Lösung in OOP Art und Weise zu erweitern, obwohl ich dieses Interview gescheitert :)
Für eine einfache Halb mathematisch wie diese Frage, was wäre ein OOP Weg dorthin sein? Alles sieht gut aus. Vielleicht wollten sie, dass du einen Interger anstelle eines Enums zurücksendest. – lokusking
@lokusking eigentlich betonten sie, eine Lösung auf OOP-Art zu bauen, also bin ich froh, sie zu studieren – kez
Wer diese Frage formulierte, hatte wahrscheinlich keine Ahnung, welche OOP verwendet werden sollte zum. Eine einzelne (!) Funktion garantiert keine ganze Klasse. –