Java-菜鳥学習の道(四)


Java-菜鳥学習の道(四)
今日はJavaのトレーニングの4日目で、次の今日のコードを共有します.
  • 入力された日付に基づいて、曜日
    import java.util.Scanner;
    import java.util.Date;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class CalendarTest{
    
    	public static void main(String[] args){
    		System.out.println("   2014-09-04    :");
    		Scanner scanner = new Scanner(System.in);
    		String str = scanner.nextLine();
    		Calendar c = null;
    		try{
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    		Date date = sdf.parse(str);
    		
    		c = Calendar.getInstance();
    		c.setTime(date);
    		}catch(Exception e){
    		
    		}
    		System.out.println("    "+c.get(Calendar.DAY_OF_YEAR)+" 。");
    		switch(c.get(Calendar.DAY_OF_WEEK)){
    		case 1:
    			System.out.println("   ");
    			break;
    		case 2:
    			System.out.println("   ");
    			break;
    		case 3:
    			System.out.println("   ");
    			break;
    		case 4:
    			System.out.println("   ");
    			break;
    		case 5:
    			System.out.println("    ");
    			break;
    		case 6:
    			System.out.println("   ");
    			break;
    		case 7:
    			System.out.println("   ");
    			break;
    			
    		}
    		
    	}
    
    }
  • を得る.
  • 継承テスト、マルチパラメトリック構造関数、親構造メソッドの呼び出し
    class Person{
    	String name;
    	String addr;
    	String sex;
    	int age;
    
    	public Person(){
    		
    	}
    
    	public Person(String name,int age){
    		this.name = name;
    		this.age = age;
    	}
    
    	public Person(String name,String addr,String sex,int age){
    		this.name = name;
    		this.age = age;
    		this.addr = addr;
    		this.sex = sex;
    	}
    
    	public String toString(){
    		return this.name+" "+this.age+" "+this.addr+" "+this.sex;
    	}
    }
    
    
    class Student extends Person{
    
    	int mathScore;
    	int englishScore;
    	public Student(){
    		
    	}
    
    	public Student(String name,int age){
    		super(name,age);
    	}
    
    	public Student(String name,String addr,String sex,int age,int mathScore,int englishScore){
    		super(name,addr,sex,age);
    		this.mathScore = mathScore;
    		this.englishScore = englishScore;
    	}
    
    	public String toString(){
    		return this.name+" "+this.age+" "+this.addr+" "+this.sex+" "+this.mathScore+" "+this.englishScore; 
    	}
    
    }
    
    public class ExtendsTest{
    
    	public static void main(String[] args){
    		Student stu = new Student("  ","  "," ",22,99,98);
    		System.out.println(stu.toString());
    	}
    
    }
  • は円形を求めて、三角形と台形の周長と面積
    interface Shape{
    	
    	public String getArea();
    
    	public String getPerimeter();
    }
    
    
    class Round implements Shape{
    	int radius;
    	final double π = 3.14;
    	Round(int radius){
    		this.radius = radius;
    	}
    
    	public String getArea(){
    		return "     :"+π*radius*radius;
    	}
    
    	public String getPerimeter(){
    		return "     :"+π*radius*2;
    	}
    }
    
    class Triangle implements Shape{
    	double a,b,c;
    	Triangle(double a,double b,double c){
    		if((a+b>c)&&(a+c>b)&&(b+c>a)){
    			this.a = a;
    			this.b = b;
    			this.c = c;
    		} else {
    			System.out.println("         !!!");
    		}
    	}
    
    	public String getArea(){
    		double p = (a+b+c)/2;
    		//System.out.println(p+"--------"+a+" "+b+" "+c);
    		double area = Math.sqrt(p*(p-a)*(p-b)*(p-c));
    		return "      :"+area;
    	}
    
    	public String getPerimeter(){
    		double length = a+b+c;
    		return "      :"+length;
    	}
    }
    
    class Ladder implements Shape{
    	
    	double top,down,left,right;
    	Ladder(double top,double down,double left,double right){
    		this.top = top;
    		this.down = down;
    		this.left = left;
    		this.right = right;
    	}
    
    	public String getArea(){
    		double p = (left+right+down-top)/2;
    		double area = Math.sqrt(p*(p-left)*(p-right)*(p-down+top));
    		double height = 2*area/(down-top);
    		double ladArea = (top+down)*height/2;
    		return "     :"+ladArea;
    	}
    
    	public String getPerimeter(){
    		double length = top+down+left+right;
    		return "     :"+length;
    	}
    
    }
    
    public class ShapeTest{
    
    	public static void main(String[] args){
    		Round r = new Round(3);
    		System.out.println(r.getArea());
    		System.out.println(r.getPerimeter());
    		Triangle t = new Triangle(1,1,1);
    		System.out.println(t.getArea());
    		System.out.println(t.getPerimeter());
    		Ladder lad = new Ladder(4,10,5,5);
    		System.out.println(lad.getArea());
    		System.out.println(lad.getPerimeter());
    	}
    
    }
  • 今日の学習の重点は継承と多態であり、Javaのクラスは単一の継承、すなわち1つの親のみを実現することができる.Javaでのマルチ継承はインタフェースによって実現される.
  • 継承:OOP(Object Oriented Programming)プログラミング技術の礎である.定義されたクラスに基づいて新しいクラスを作成することを意味します.新しいクラスは、既存のクラスを何らかの方法で拡張します.is-aの関係を体現している.OOPのプログラミングでは、継承は新しいクラスが親から来て、各クラスに直接の親があることを意味します.親クラスまたは表示定義、または暗黙的に規定され、表示されずに親クラスを定義した場合、暗黙的に定義された親クラスはObjectクラスである.メリット:コードの再利用性   短所:依存性が強すぎる   (低レンコン  高凝集)