学习----面向对象编程

4 篇文章 0 订阅

1、日期的封装

public class MyDate{
	int year,month,day;
	private static int thisYear;
	static {
		thisYear=2008;
	}
	public MyDate(int year,int month,int day){
		this.set(year,month,day);
	}
	public MyDate(){
		this.set(1,1,1);
	}
	public MyDate(MyDate d){
		this.set(d);
	}
	public void set(MyDate d){
		this.set(d.year,d.month,d.day);
	}
	public void set(int year,int month,int day){
		this.year=year;
		this.month=(month>=1)&&(month<=12) ? month : 1;
		this.day=(day>=1)&&(day<=31) ? day : 1;
	}
	public int getYear(){
		return this.year;
	}
	public int getMonth(){
		return this.month;
	}
	public int getDay(){
		return this.day;
	}
	public static int getThisYear(){
		return thisYear;
	}
	public String toString(){
		return this.year+" 年 "+this.month+" 月 "+this.day+" 日 ";
	}
	public static boolean isLeapYear(int year){
		return year%400==0||year%100!=0&&year%4==0;
	}
	public boolean isLeapYear(){
		return this.isLeapYear(this.year);
	}
	public static int daysofMonth(int year,int month){
		switch(month){
			case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31;
			case 4:case 6:case 9:case 11:return 30;
			case 2: return MyDate.isLeapYear(year) ? 29:28;
			default:return 0;
		}
	}
	public int daysofMonth(){
		return this.daysofMonth(this.year,this.month);
	}
	public void tomorrow(){
		this.day++;
		if(this.day>this.daysofMonth()){
			this.day=1;
			this.month++;
			if(this.month>12){
				this.month=1;
				this.year++;
			}
		}
	}
	public MyDate yestoday(){
		MyDate date=new MyDate(this);
		date.day--;
		if(date.day==0){
			date.month--;
			if(date.month==0){
				date.month=12;
				date.year--;
			}
			date.day=this.daysofMonth(date.year,date.month);
		}
		return date;
	}
}
class MyDate_ex{
	public static void main(String[] args){
		System.out.println("today is "+MyDate.getThisYear()+" ,leap ? "+MyDate.isLeapYear(MyDate.getThisYear()));
		MyDate d=new MyDate(2015,3,1);
		int sum=0;
		for(int i=1;i<d.month;i++){
			sum+=d.daysofMonth(d.year,i);
		}
		sum+=d.day;
		System.out.println(d+" is this year "+sum+" days ");
	}
}


2、编程例题

            写一个复数类(类名为:Complex),包含:①两个protected整型属性,分别代表:实数部分、虚数部分;②两个构造方法:一个带两个参数,一个不带参数;③两个方法:求实数加法的complexAdd(Complex a)方法,能把当前复数对象的实部、虚部组合成a+bi的字符串形式的String toString( )方法;④在main( )方法中对该复数类进行如下功能验证:调用complexAdd( )方法把1+2i 和3+4i 相加产生一个新的复数4+6i,调用toString( )方法把新复数转换成字符串“4+6i”,然后用System.out.println( )方法输出该字符串。
public class Complex{
	protected int real;
	protected int imag;
	public Complex(int real, int imag){
		this.real = real;
		this.imag = imag;
	}
	public Complex(){
	}
	public void merge(Complex a){
		this.real = this.real + a.real;
		this.imag = this.imag + a.imag;
	}
	public Complex complexAdd(Complex a){
		Complex c = new Complex();
		c.real = this.real + a.real;
		c.imag = this.imag + a.imag;
		return c;
	}
	
	public String toString(){
		return real + "+" + imag + "i";
	}
	public static void main(String args[]){
		Complex a = new Complex(1,2);
		Complex b = new Complex(3,4);
		a.merge(b);
		System.out.println( "merge:"+ a.toString() );
		
		System.out.println( "complex:"+ a.complexAdd(b).toString() );
	}
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值