Αναγκαιότητα των κλάσεων

Μαθαίνουμε με παραδείγματα γιατί είναι αναγκαίες οι κλάσεις

Θεωρούμε το κάτωθι απλό πρόγραμμα, το οποίο, αν και γραμμένο στη γλώσσα προγραμματισμού Java
δεν έχει καθόλου αντικειμενοστρεφή χαρακτηριστικά. Όλος ο κώδικας βρίσκεται μέσα στη μέθοδο main
(στατική μέθοδος που πρέπει να υφίσταται σε κάθε πρόγραμμα Java δεδομένου ότι από αυτήν ξεκινά
πάντοτε η εκτέλεση του προγράμματος).
Το πρόγραμμα λαμβάνει για ένα πλήθος υποθετικών προϊόντων (για όσα θέλει να καταχωρήσει ο
χρήστης), το όνομά τους, την τιμή τους και το σκορ τους, βάσει κάποιας κλίμακας αξιολόγησης. Μετά το
πέρας της καταχώρησης των στοιχείων το πρόγραμμα εκτυπώνει το "βέλτιστο" προϊόν, δηλαδή αυτό που
επιτυγχάνει τον καλύτερο λόγο σκορ/τιμή.
Από πλευράς μεταβλητών, χρησιμοποιεί 3 μεταβλητές για την καταχώρηση του τρέχοντος προϊόντος σε
κάθε επανάληψη (next_name, next_price, next_score) και 3 μεταβλητές για την αποθήκευση των
στοιχείων του βέλτιστου προϊόντος σε κάθε επανάληψη (best_name, best_price, best_score).

 

Πρώτη εκδοχή προγράμματος (μη αντικειμενοστρεφής)
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String best_name = "";
double best_price = 1;
int best_score = 0;
boolean more = true;
while(more) {
String next_name;
double next_price;
int next_score;
System.out.println("Please enter the product name: ");
next_name = in.nextLine();
System.out.println("Please enter the product price: ");
next_price = in.nextDouble();
System.out.println("Please enter the product score: ");
next_score = in.nextInt();
if(next_score/next_price > best_score/best_price) {
best_name = next_name;
Αλέξανδρος Χατζηγεωργίου, 2012
best_price = next_price;
best_score = next_score;
}
System.out.println("More data ? (1=YES, 2=NO)");
int answer = in.nextInt();
if(answer != 1)
more = false;
in.nextLine();
}
System.out.println("The best product is: " + best_name);
System.out.println("The best price is: " + best_price);
System.out.println("The best score is: " + best_score);
}
}