class Worker { private String name; private int years; // Getters and setters ... }
class Programmer extends Worker { private String language; }
class Manager extends Worker { private List<Worker> workers; }
// in some method... Programmer zhangSan = new Programmer(); zhangSan.setName("张三"); Manager liSi = new Manager(); liSi.addWorker(zhangSan);
// patch some codes -Programmer zhangSan = new Programmer(); +Worker zhangSan = new Programmer(); // new codes zhangSan = new Manager();
zhangSan.setName("张无忌");
class ProgrammerAndManager : public Programmer, public Manager { private: // no new attribute }; ProgrammerAndManager *wangWu = new ProgrammerAndManager();
class Programmer : virtual public Worker { // ... }; class Manager : virtual public Worker { // ... };
class Worker { private String name; private List<Job> job; } class Job { private int years; } class Programmer extends Job { private String language; } class Manager extends Job { private List<Worker> workers; } // within some method Worker zhangSan = new Worker(); zhangSan.addJob(new Programmer()); Worker liSi = new Worker(); liSi.addJob(new Manager()); Worker wangWu = new Worker(); wangWu.addJob(new Programmer(10)); wangWu.addJob(new Manager(5));
// Change this class: class Job { private Worker worker; // Associated worker } class Programmer extends Job { private String language; public writeProgram() { System.out.println(this.getWorker().getName() + "wrote a program in " + this.getLanguage()); } } pubic static void main(String args) { Programmer wangWuSProgrammerAspect = new Programmer("java",5); Worker wangWu = new Worker(); wangWu.setName("王五"); wangWu.addJob(wangWuSProgrammerAspect); wangWuSProgrammerAspect.writeProgram(); }
class Worker { void writeProgram() { throw new MethodNotImplementedException(); } }
0票
开心
0票
板砖
0票
感动
0票
有用
0票
疑问
0票
难过
0票
无聊
0票
震惊
顶
踩