2010-11-29 31 views
0

J'ai quatre tables: département (id, nom), cours (id, nom), staff (id, nom, dept_id) et staff_to_course (staff_id, course_id). Je dois montrer combien de personnes de chaque ministère ont (et n'ont pas) complété chaque cours ainsi qu'une moyenne pour chaque département et pour chaque cours:Représentation OOP des données d'une requête JOIN

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

je peux faire le SQL requête de jointure, mais je suis confus sur la façon d'utiliser correctement les objets pour représenter les données en interne.

J'ai actuellement les cours et les objets de département mais les méthodes d'écriture comme $course->percentComplete($dept_id) se sent un peu mal et $course->percentComplete('all') se sent encore plus mal. Le chiffre moyen du cours n'est pas une propriété sensible d'un objet d'instance de cours, mais le placer sur l'objet département signifierait dupliquer le code sur deux classes, ce qui est absolument faux.

Je m'attends à ce qu'il y ait un principe de base OO que je viole ici mais je ne vois pas ce que c'est.

Répondre

0

Je mettrais le code dans la classe Staff dans les méthodes statiques.

Par exemple ...

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(){ 
    // ... 
    } 

} 

pourrait-il fonctionner de solution pour vous?

+0

Merci Fabrizio, mais il me semble que l'utilisation de méthodes statiques consiste essentiellement à renoncer à la POO et à revenir aux fonctions. – Tamlyn