以 :
老张开车去东北为例:
没思想
public class Test {
public static void main(String []args) {
System.out.println("老张开车去东北");
}
}
面向过程:
public class Test {
public static void main(String []args) {
String driverName = "老张";
String vehicle = "车";
String targetPlace = "东北";
System.out.println(dirverName + "开" + vehicle + "去" + targetPlace);
}
}
抽象出方法:
方法是封装的第一步,也就是说调用函数不必看到具体的语句,直接将参数输入就可得到结果,,,{封装的内容相当于一个黑匣子}
第一次封装
public class Test {
public static void main (String []args) {
String driverName = "老张";
String vehicle = "车";
String targetPlace = "东北";
go(driverName,vehicle,targetPlace);
}
public void go (String driverName , String vehicle , String targetPlace ) {
System.out.println(driverName + "开" + vehicle + "去" + targetPlace);
}
}
{面向对象的思维方式 : 可以用如下的方法简化操作 1.考虑名词{需求中大多数的类都是名词,,当然名词也有可能是属性}}
面向对象的过程是一个设计的过程 只要按照面向对象思想进行设计 没有对错 放心大胆滴去设计 大不了再改 设计尽量不要脱离具体环境
比如 老张对象 设计成类时 最好设计成司机而不是人类
2.考虑类的属性:属性有很多,,但要根据具体情况封装属性。 {不可脱离具体的应用环境}
3.方法的封装:
例如: 要封装Driver的方法,,就要站在Driver的角度考虑,, 假设自己就是driver
4.类之间的关系: 如:司机 开 车 司机和车之间的关系是开
面向对象的思想 在于 隐藏{封装} 即降低耦合度 但耦合度为0的系统没有用
package com.bjsxt.oo;
public class Driver {
private String driverName ;
public String getDriverName() {
return driverName;
}
public void setDriverName(String driverName) {
this.driverName = driverName;
}
public void drive (Vehicle vehicle) {
vehicle.go(new Address("东北"));
}
public void drive (Vehicle vehicle , Address targetPlace) {
vehicle.go(targetPlace);
}
}
package com.bjsxt.oo;
public class Vehicle {
private String vehicleName ;
public String getVehicleName() {
return vehicleName;
}
public void setVehicleName(String vehicleName) {
this.vehicleName = vehicleName;
}
public void go(Address targetPlace) {
}
}
package com.bjsxt.oo;
public class Address {
private String targetName ;
public String getTargetName() {
return targetName;
}
public void setTargetName(String targetName) {
this.targetName = targetName;
}
public Address (String targetName) {
this.targetName = targetName ;
}
}
}
public String getDriverName() {
return driverName;
}
this.driverName = driverName;
}
av.go(new Address("东北"));
}
public void drive (AllVehicle av , Address targetPlace) {
av.go(targetPlace);
}
}
public String getVehicleName() {
return vehicleName;
}
this.vehicleName = vehicleName;
}
System.out.println("Vehicle ======" + targetPlace.getTargetName());
}
}
public void go(Address targetPlace) {
System.out.println("Plane =====" + targetPlace.getTargetName());
}
}
Driver driver = new Driver();
driver.setDriverName("老张");
Vehicle car = new Vehicle();
car.setVehicleName("奥迪");
Address a = new Address("日本");
driver.drive(new Plane() , a);
}
}