今天是7月12号,距离期末考完已经过去11天了,暑假早就打算留在南京实习了,但是一时半会都找不到单位,比较纠结,先前也面试了一家公司,但是这个公司必须要你先交钱在进行培训,否则就不给录取,所以我的面试就这样呗涮下来了。暑假就两个月,不想耽误时间为了尽快找份工作,就找了个服务员的工作,这份工作可把我累死了,每天工作至少11个半小时,几乎有9个小时是在外面不停地走,不停地送外卖的。所以一天下来很累。这个记笔记事业也给耽误了。
现在正在看移动资费系统视频,在回头看交通灯管系统这个项目的视频,这个系统的逻辑并不复杂,他与银行业务调度一样都是着重面向对象设计与分析的,总的来说并不是很难, 由于每天给人送外面,天天坐电梯,突发奇想,也想写一个电梯调度系统项目。 移动资费那个视频说老实话真的是很难,看都看不懂,云里雾里。钻进去了出不来了。
在进行面向对象设计时的思路是:一共多少个类; 每个类都有什么属性和方法; 类和类之间都有什么关系。 在就是张老师所要求掌握的:某个类具有哪些属性,他就有对外提供操作这些属性的方法。
Lamp.java
package cn.itcast.interview.traffice2; public enum Lamp { S2N("N2S", "S2W", false), S2W("N2E", "E2W", false), E2W("W2E", "E2S", false), E2S("W2N", "S2N", false), N2S(null, null, false), N2E(null, null, false), W2E(null, null, false), W2N(null, null, false), S2E(null, null, true), E2N(null, null, true), N2W(null, null, true), W2S(null, null, true); //灯应该有一个属性:灯是不是绿的 private boolean lighted; //相反方向的灯 private String opposite; //当前路线下一条路线的灯 private String next; private Lamp(String opposite, String next, boolean lighted) { this.opposite = opposite; this.next = next; this.lighted = lighted; } public boolean isLighted() { return lighted; } public void light() { this.lighted = true; if (opposite != null) { Lamp.valueOf(opposite).light(); } System.out.println(name() + " lamp is green 下面共有六个方向能看到汽车穿过"); } public Lamp blackOut() { this.lighted = false; if (opposite != null) { Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp = null; if (next != null) { nextLamp = Lamp.valueOf(next); System.out.println("绿灯从" + name() + "------->切换为" + next); nextLamp.light(); } return nextLamp; } }
package cn.itcast.interview.traffice2; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class LampController { private Lamp currentLamp; public LampController() { this.currentLamp = Lamp.S2N; currentLamp.light(); ScheduledExecutorService pool = Executors.newScheduledThreadPool(1); pool.scheduleAtFixedRate( new Runnable() { public void run() { currentLamp = currentLamp.blackOut(); } }, 10, 10, TimeUnit.SECONDS ); } }
package cn.itcast.interview.traffice2; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class Road { //路上有很多车, 这些车应都装在一个集合里 private List<String> vehicles = new ArrayList<String>(); //路应该有个名字在来标示是那条路线 private String name; public Road(String name) { this.name = name; ScheduledExecutorService pool = Executors.newScheduledThreadPool(1); pool.execute(new Runnable() { public void run() { for (int i=1; i<1000; i++) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } vehicles.add(Road.this.name + " _" + i); } } }); ScheduledExecutorService pool2 = Executors.newScheduledThreadPool(1); pool2.scheduleAtFixedRate( new Runnable() { public void run() { if (vehicles.size() > 0) { boolean lighted = Lamp.valueOf(Road.this.name).isLighted(); if (lighted) { System.out.println(vehicles.remove(0) + " : is passing"); } } } }, 1, 1, TimeUnit.SECONDS ); } }
package cn.itcast.interview.traffice2; public class MainClass { /** * @param args */ public static void main(String[] args) { String[] directions = new String[] { "S2N", "S2W", "E2W", "E2S", "N2S", "N2E", "W2E", "W2N", "S2E", "E2N", "N2W", "W2S" }; for (int i=0; i<directions.length; i++) { new Road(directions[i]); } new LampController(); } }