java中的对象设计

面向对象

Java 是面向对象的编程语言,我们生活中绝大多数事物,都有三大基本特性:

  • 封装:把具有普遍特性事物的数据和操作进行归类,如ATM就是用来取钱的,那么就将取钱操作写到ATM类中,就叫封装了。
  • 继承:科技在发展社会在进步,原来归类的事物数据和功能越来越多,我们就将新的功能在原基础上扩展,就叫继承。如果你不扩展也可以,重新封装一下就行,只是人生苦短何必浪费时间。
  • 多态:简单的理解为单对象有多种形态,如叶子,在春天是嫩绿、夏天是深绿、秋天是金黄、冬天就=null了;总不能没个季度的叶子都封装一次吧,原则上没问题,可是有点不符合逻辑啊,对吧,都他妈是叶子,我干嘛还要单独写四个,不是闲得蛋疼嘛。

有了以上三种特性,我们就可也开开心心的找对象了。
那你就错了
小心!开发的时候还有五大原则:

  • 单一职责原则:每一个类应该专注于做一件事情。提高类的可读性,提高系统的可维护性,内容不要太多太杂,不然不利于维护。
  • 开放封闭原则: 一个类是可扩展的,而不可修改的。你可以在原功能之上扩展新的功能,但是你不能给我把原有的方法给改了。抽象编程,而不是具体编程。
  • 里氏替换原则:超类存在的地方,子类必须能够替换其父类。不能随便去继承不合适的,有多余方法或者属性的类。子类可以扩展父类的功能,但不能改变父类原有的功能。
  • 依赖倒置原则:一个类,不应该强制依赖另一个类,每个类对于另外一个类都是可替换的。实现尽量依赖抽象,不依赖具体实现。
  • 接口分离原则:应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。实际编程中需要注意大小的度,不能太小也不能太大。

遵循了以上原则的代码,才能已于维护;按照原则来才有时间找女朋友。

对象设计

既然是搞面向对象编程,咋们就来搞一个对象。以提款机为例,定义类,抽象现实中的自动取款机(ATM)。
暂定以下标志性属性和功能:

  • 属性:取款机内的现金值
  • 功能1:取款时验证是否有足够的现金
  • 功能2:有足够的现金时进行取款并扣除取款机内的现金值
//取款机类
class myATM{
	
	//私有的现金变量,元
	private int ATMCash=0;
	
	//构造函数
	public void ATM(){

	}
	
	//初始化提款机金额
	public void init(int cash){
		ATMCash=cash;
	}
	
	//检查提取金额
	private boolean checkCash(int takeCash){
		return (ATMCash>takeCash);
	}
	
	//取现
	public void tacke(int takeCash){
		if(checkCash(takeCash)){
			ATMCash = ATMCash - takeCash;
			System.out.println("成功提取现金"+takeCash+"元。");
			System.out.println("本ATM剩余现金"+ATMCash+"元。");
		}else{
			System.out.println("本ATM现金不足,取钱失败!");
		}
	}
	
}

跑一下

import java.util.Scanner;

public class ATM{
	public static void main(String [] args){
		myATM  A = new myATM();  //创建一个ATM对象
		A.init(500); //初始化ATM内的现金值
		Scanner scan = new Scanner(System.in); 
		System.out.println("请输入取款金额:");
		int takeCash = scan.nextInt(); //获取取款金额
		A.tacke(takeCash); //取款
	}
}

控制台运行效果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值