[TIL] [Java] 0705


Javaオブジェクト向けプログラミング
:オブジェクトとは一般的に言われているもので、ここのものはデータだけでなく、データの操作方法に関する情報も含まれているため、その手法をオブジェクト向けと呼ぶ.

カスタム関数

public static int function(int a, int b) {
	return 0;
}
charat()関数:input.charAt(input.length()-1); 時にinputに格納される文字列の最後の文字
3つの数の中で最大の値を検索
public static int max(int a, int b) {
	return (a>b) ? a:b;
}
public static int function(int a, int b, int c) {
	int result = max(a,b);
    result = max(result, c);
    return result;
}
この方法で見つけやすいです.

さいきかんすう

public static int factorial(int n) {
	if(n == 1)
    	return 1;
    else
    	return n * factorial(n - 1);
}
// 5! = 5 * 4! 이기 때문

整列

// 배열 선언
int[] array = new int[10];

// 배열에 채울 수 입력받아 채우기
Scanner sc = new Scanner(System.in);
for(int i=0; i<10; i++) {
	array[i] = sc.nextInt();
}
(int) (Math.random() * 100+1);
1~100のランダム整数

たじゅうはいれつ


int[][] array = new int[10][10]
10 x 10の2 Dアレイ

カテゴリ


:オブジェクト向けプログラミングで最も基本的なもの.
利用類は現実世界の特定のものを指すことができる.
代表的なのはノードクラスです.
これは、場所または場所であってもよいし、データ構造ではバイナリナビゲーションツリーと呼ばれるバイナリナビゲーションツリーのサブツリーであってもよい.
また、開発プロジェクトでは、通常、Studentクラスなど、処理するデータ単位が指定されます.
ノードクラスの作成(Mainセクションは作成せず、選択されていないチェックボックスのみ作成)

public class Node {
	
	// x, y 자체는 외부에서 접근할 수 없도록 private로 선언
	private int x;
	private int y;
	
	// x를 외부에서 접근할 수 있는(얻는) 함수를 만들어줌(public)
	public int getX() {
		return x;
	}
	// x 값을 설정할 수 있도록 하는 함수
	public void setX(int x) {
		// 여기서 가지고 있는 고유한 x의 값을 인자로 받은 x값으로 바꾸어주기 위해서 this
		this.x = x;

	}
	
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;

	}
	
	// 생성자
	// :인스턴스 즉, 객체를 만들어 줄 때 자동으로 값을 넣어주는(초기화 해주는) 함수
	public Node(int x, int y) {
		// 특징은 클래스와(Node) 같은 이름(Node)을 가짐
		this.x = x;
		this.y = y;
	}
	
	public Node getCenter(Node other) {
		// 반환형이 Node
		// 다른 점과 비교해 정 중앙을 반환하는 함수
		return new Node((this.x + other.getX()) / 2, (this.y + other.getY()) / 2);
	}
	
}
Mainクラス

public class Main {

	public static void main(String[] args) {

		Node one = new Node(10, 20);
		Node two = new Node(30, 40);
		
		// result는 one과 two의 정 중앙 좌표가 들어가게 됨.
		Node result = one.getCenter(two);
		
		System.out.println("x: " + result.getX() + ", y: " + result.getY());
		
	}

}
出力された結果値は、1つと2つの中央のx:20、y:30です.
Mainドキュメントでのみ使用されます.

継承


Main文なしPersonクラスの作成
private String name;
private int age;
private int height;
private int weight;
そうすると、右クリック->source->Generate getters and setters->selectallでgetterとsetterを簡単に作成できます.
(getterとsetterが存在するのは、セキュリティを確保するためであり、勝手にアクセスすることは許されない)
マウスの右ボタン->source->Fieldsを使用してパラメータを一度に初期化する関数も作成できます.(作成者)
そのうちsuper();つまり、自分の親クラスの作成者が実行されます.
Main文を持たないStudioクラスの作成
public class Student extends Person {
	private String studentID;
	private int grade;
	// GPA: 외국식 학점
	private double GPA;
}
extends PersonはPersonクラスを継承します.
そうすると、sourceのGenerate Getters and Settersで作成されます.
(これは必要なプロセスで、ほとんど完成できます)
同様の方法でFieldsを使用してGenerate Constructorを作成することもできます.
public void show() {
	System.out.println("-----------------------------");
	System.out.println("학생 이름: " + getName());
	System.out.println("학생 나이: " + getAge());
	System.out.println("학생 키: " + getHeight());
	System.out.println("학생 몸무게: " + getWeight());
	System.out.println("학번: " + getStudentID());
	System.out.println("학년: " + getGrade());
	System.out.println("학점: " + getGPA());
}
Studioクラスにshow()関数を作成します.
Mainクラスの作成

public class Main {

	public static void main(String[] args) {

		Student student1 = new Student("하", 23, 165, 55, "20181518", 4, 4.5);
		Student student2 = new Student("윤경", 23, 170, 60, "20181515", 4, 4.5);
		
		student1.show();
		student2.show();
		
	}

}
これらの継承コンテンツによって作成されたクラスを使用してstudent 1,2というオブジェクトを作成し、show()関数によって最終的に2人の学生の情報を出力します.
eこのようなオブジェクト向けの利点を見た
学生[i]=newStudent("ガーナ",23,165,50,i+",4,4.5);
i+""で整数をstringに変換できます.

抽象抽象


抽象クラスはオブジェクトインスタンスを直接作成できません.しかし、これは新しいクラスの作成に基礎的な役割を果たします.機能の観点から、クラスをフレームワークで作成できるように、ある程度事前に設計されています.
Playerという抽象クラスの作成
abstract class Player {
	abstract void play(String songName);
	abstract void pause();
	abstract void stop();
}
publicの代わりに抽象クラスを使用します.
Mainクラスでの実装
extends Playerを追加すると、警告をクリックしてフレームワークを作成し、「Add Unlemented Method」をクリックして実装できます.
public class Main extends Player {

	public static void main(String[] args) {
		Main main = new Main();
		main.play("Joakim Karud - Mighty Love");
		main.pause();
		main.stop();
	}

	@Override
	void play(String songName) {
		System.out.println(songName + " 곡을 재생합니다.");
	}

	@Override
	void pause() {
		System.out.println("곡을 일시정지합니다.");
	}

	@Override
	void stop() {
		System.out.println("곡을 정지합니다.");
	}

}
最終的に,抽象クラスは実現しなければならない要素を教えてくれ,システムの観点から意味がある.
使用する関数の意味を定義します.

Final


:値の変更を防止し、上書き(再定義)を防止し、継承を不可能にします.

インタフェース


抽象クラスより抽象的です.(=事前に実施できず、設計しかできない)設計の本質.
Javaで多重継承を実現する高度なテクノロジー.
定義済みの抽象メトリックと定数が必要です.
チームプロジェクトの並列作業に有利であり、抽象的な要求よりも設計基準が高いため、より系統的な評価が得られている.
インタフェースには本当に設計するだけで、実際にコードを書くとエラーが発生します.(同じコードの場合はabtrate class dog、public interface dogは使用できません)
// Dog 클래스
public interface Dog {
	abstract void crying();
	public void show();
}
eのようなインタフェースの場合,public void show()に実際のコードを含めることはできない.
// Main 클래스
public class Main implements Dog {

	public static void main(String[] args) {
		Main main = new Main();
		main.crying();
		main.show();
	}

	@Override
	public void crying() {
		System.out.println("월월!");
	}

	@Override
	public void show() {
		System.out.println("Hello, World!");
	}

}

しゅうたいたけいせい


オブジェクトオブジェクト


:オブジェクトクラスは、すべてのオブジェクトの祖先として使用されます.
実際、Javaでは、すべてのクラスがObjectクラスを暗黙的に継承しています.

📢


ほぼ2日間でJavaの記憶を復元
本当に全然覚えてないけど、東彬娜先生の授業を聞いて、基本的な枠組みを思い出してよかった
もっと問題を作って練習しなければならないようだ.
終わりだ!