2010-11-29 11 views
0

Ich habe vier Tabellen: Abteilung (ID, Name), Kurs (ID, Name), Mitarbeiter (ID, Name, Abteilung_ID) und Staff_to_Course (Staff_ID, Kurs_ID). Ich muss zeigen, wie viele Menschen aus jeder Abteilung (und nicht) abgeschlossen jeden Kurs sowie einen Durchschnitt für jede Abteilung und eine für jeden Kurs:OOP-Darstellung von Daten aus einer JOIN-Abfrage

 | Course 1 | Course 2 | Average | 
---------------------------------------- 
Dept 1 |  20% |  30% |  25% | 
---------------------------------------- 
Dept 2 |  10% |  40% |  25% | 
---------------------------------------- 
All |  18% |  33% |  25% | 
---------------------------------------- 

ich die SQL-Abfrage beitreten tun können, aber ich Ich bin verwirrt darüber, wie man Objekte richtig verwendet, um die Daten intern darzustellen.

Ich habe derzeit Kurse und Abteilung Objekte, aber schreiben Methoden wie $course->percentComplete($dept_id) fühlt sich irgendwie falsch an und $course->percentComplete('all') fühlt sich noch mehr falsch. Die Kursdurchschnittszahl ist keine sinnvolle Eigenschaft eines Kursinstanzobjekts, aber das Ablegen auf das Abteilungsobjekt würde bedeuten, den Code über zwei Klassen hinweg zu duplizieren, was definitiv falsch ist.

Ich erwarte, dass es ein grundlegendes OO-Prinzip gibt, das ich hier verletze, aber ich kann nicht sehen, was es ist.

Antwort

0

Ich würde den Code in der Staff-Klasse in statische Methoden setzen.

Zum Beispiel ...

public class Staff extends MyAbstractDB{ 

    // your attributes 

    // your getter/setter 

    public static List<Staff> listCompleted(Department dep){ 
    // here you should execute the sql query or use a criteria builder if you are using Hibernate 
    } 

    public static List<Staff> listCompleted(){ 
    // ... 
    } 

} 

Könnte diese Lösung für Sie arbeiten?

+0

Danke Fabrizio, aber es scheint mir statische Methoden auf diese Weise im Wesentlichen aufzugeben OOP und geht zurück zu Funktionen. – Tamlyn

Verwandte Themen