『第1行コードjava』の授業後のプログラミング問題(第4章)

5180 ワード

第四章対象向けの高度な知識
1.抽象メソッドgetClassName()が1つしかないClassNameインタフェースを定義します.クラス名を取得する機能を持つクラスCompanyを設計し、インタフェースClassNameのメソッドgetClassName()を実装します.アプリケーション作成にはCompanyクラスを使用します.コードは次のとおりです.
package www.zbq.com;

interface ClassName {
	public abstract void getClassName();
}

class Company implements ClassName {
	public void getClassName() {
		System.out.println(getClass());
	}
}

public class Test {

	public static void main(String[] args) {
		Company c = new Company();
		c.getClassName();
	}

}


2.人間(Person)と学生クラス(Student)の機能要件を確立する:A.Personクラスには4つの保護型のデータメンバーname、address、sex、ageがそれぞれ文字列、文字列、文字、整形である.名前、住所、性別、年齢を表す.4つのパラメータ構造方法、1つのパラメータなし構造方法、および4つの属性を表示するための出力方法.B.StudentはPersonを継承し、出力を母体math、englishに増やして数学と英語の成績を保存する.6つのパラメータ構造方法、1つの2つのパラメータ構造方法、1つのパラメータなし構造方法、書き換え出力方法はすべての6つの属性を表示するために使用されます.コードは次のとおりです.
package www.zbq.com;

class Person {
	public String name;
	public String address;
	public char sex;
	public int age;

	public Person() {

	}

	public Person(String name, String address, char sex, int age) {
			this.name=name;
			this.address=address;
			this.sex=sex;
			this.age=age;
	}

	public void print() {
		System.out.println("  :" + this.name + "  :" + this.address + "  :" + this.sex + "  :" + this.age);

	}
}
class Student extends Person
{
	public double math;
	public double english;
	public Student() {}
	public Student(double math,double english) 
	{
		this.math=math;
		this.english=english;
	}
	public Student(String name,String address,char sex,int age,double math,double english) 
	{
		this.name=name;
		this.address=address;
		this.sex=sex;
		this.age=age;
		this.math=math;
		this.english=english;
	}
	public void print() 
	{
		System.out.println("  :" + this.name + "  :" + this.address + "  :" + this.sex + "  :" + this.age+"    :"+this.math+"    :"+this.english);
	}
}

3.従業員クラスを定義して、名前、年齢、性別の属性を持って、そして構造方法を持って、データの方法を表示して、管理層クラスを定義して、従業員クラスを継承して、そして自分の属性があります:職務、年俸.丁一志望類は、従業員類を継承し、自分の属性を持っている:所属部門、月給.コードは次のとおりです.
class Employee {
	public String name;
	public int age;
	public String sex;

	public void Employee(String name, int age, String sex) {
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	public void print() {
		System.out.println("  :" + this.name + "  :" + this.age + "  :" + this.sex);
	}
}

class Management extends Employee {
	private String duty;
	private int AnnualSalary;

	public void Management(String duty, int AnnualSalary) {
		this.duty = duty;
		this.AnnualSalary = AnnualSalary;
	}

	public void print() {
		System.out.println("  :" + this.name + "  :" + this.age + "  :" + this.sex + "  :" + this.duty + "  :"
				+ this.AnnualSalary);
	}
}

class OfficeCleck extends Employee {
	private String department;
	private int MonthlySalary;

	public void OfficeCleck(String department, int MonthlySalary) {
		this.department = department;
		this.MonthlySalary = MonthlySalary;
	}

	public void print() {
		System.out.println("  :" + this.name + "  :" + this.age + "  :" + this.sex + "  :" + this.department + "  :"
				+ this.MonthlySalary);
	}
}

public class Test {
	public static void main(String[] args) throws Exception{
		Management management = new Management();
		management.Employee("  ", 26, " ");
		management.Management("    ", 300000);
		OfficeCleck officecleck = new OfficeCleck();
		officecleck.Employee("  ", 18, " ");
		officecleck.OfficeCleck("   ", 10000);
		management.print();
		officecleck.print();
	}
}

定義クラスShapeは、一般的な2 Dグラフィックを表します.Shapeは抽象的な方法areaとperimeterを持ち,形状の面積と周長をそれぞれ計算した.長方形、三角形、円形などの2 D形状クラスを定義してみましょう.これらのクラスはShapeクラスのサブクラスです.
abstract class Shape {
	abstract void area();

	abstract void perimeter();
}

class Roundness extends Shape {
	public double radius;

	public Roundness(double radius) {
		this.radius = radius;
	}

	public void area() {
		System.out.println("   " + this.radius + "    ,   " + (radius * radius * 3.14));
	}

	public void perimeter() {
		System.out.println("   " + this.radius + "    ,   " + (radius * 2 * 3.14));
	}
}

class Rectangle extends Shape {
	public double height;
	public double width;

	public Rectangle(double height, double width) {
		this.height = height;
		this.width = width;
	}

	public void area() {
		System.out.println("  " + this.height + "  " + this.width + "   ,   " + (this.height * this.width));
	}

	public void perimeter() {
		System.out.println("  " + this.height + "  " + this.width + "   ,   " + ((this.height + this.width) * 2));
	}
}

public class Test {
	public static void main(String[] args) {
		Roundness roundness = new Roundness(3.5);
		roundness.area();
		roundness.perimeter();
		Rectangle rectangle = new Rectangle(5, 6);
		rectangle.area();
		rectangle.perimeter();
	}
}

時間の原因のため、ただ円形のと矩形のだけを書いて、残りはすべてこのように類推することができて、以上のすべての問題、もし何か間違いがあれば、あるいはもっと優解があれば、各位の連絡を歓迎して、各位の読書に感謝します.