[ジャワイン川]2週目学習ログ-2
2-01. オブジェクト向けプログラミングとオブジェクト向けプログラミング
オブジェクト
オブジェクトの定義->実装機能->各オブジェクト間のコラボレーションの実装
2-02. 生活の中でオブジェクトを探してクラスとして実装する
public class Student {
int studentNumber;
String studentName;
...
2-03. 関数とメソッド
int add(int num1, int num2) {
int result;
result = num1 + num2;
return result;
}
メソッド(method)2-04. オブジェクトのプロパティはメンバー変数であり、オブジェクトの機能はメソッドによって実現されます。
2-05. インスタンスとスタックメモリの作成(heap memory)
≪インスタンス|Instance|emdw≫
2-06. コンストラクション関数(constructor)について説明しましょう
...
Student studentLee = new Student(12345, "Lee", 3);
...
public class Student {
public int studentNumber;
public String studentName;
public int grade;
public Student(int studentNumber, String studentName, int grade) {
this.studentNumber = studentNumber;
this.studentName = studentName;
this.grade = grade;
}
2-07. 複数の作成者を定義する作成者をロード(再ロード)
public class UserInfo {
public String userId;
public String userPassWord;
public String userName;
public String userAddress;
public String phoneNumber;
public UserInfo(){}
public UserInfo(String userId, String userPassWord, String userName) {
this.userId = userId;
this.userPassWord = userPassWord;
this.userName = userName;
}
2-08. 復習してみましょう
2-09. 参照データ型変数
2-10. アクセス制御インジケータ(accessmodifier)と情報非表示
アクセス制御インジケータ
privateとして宣言されたメンバー変数(フィールド)への共通アクセスと変更方法
情報を隠す
オブジェクトエラーを回避し、オブジェクトの使用率を向上させるために、外部からアクセスできる情報を最小限に抑える
package ch10;
public class BirthDay {
private int day;
private int month;
private int year;
private boolean isValid;
public int getDay() {
return day;
}
public void setDay(int day) {
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(day < 1 || day > 31) {
isValid = false;
} else {
isValid = true;
this.day = day;
}
break;
case 2:
if(day < 1 || day > 28) {
isValid = false;
} else {
isValid = true;
this.day = day;
}
break;
case 4: case 6: case 9: case 11:
if(day < 1 || day > 30) {
isValid = false;
} else {
isValid = true;
this.day = day;
}
break;
};
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
if( month < 1 || month > 12)
{
isValid = false;
} else {
isValid = true;
this.month = month;
}
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public void showDate() {
if(isValid) {
System.out.println(year + "년 " + month + "월 " + day + "일 입니다.");
} else {
System.out.println("유효하지 않은 날짜입니다.");
}
}
}
2-11. パッヶージ
必要な情報と機能のみを提供
各メソッドまたはメンバー変数へのアクセスによるエラーを最小限に抑える
2-12. オブジェクト自体を指すthis
this
インスタンス自体へのメモリ
2-13. オブジェクト間のコラボレーション(ソート)
オブジェクト間のコラボレーション
2-14. 対象向けのプログラム設計を用いて,学生がバスで通学する過程を実施することを試みる.
public class Student {
String studentName;
int money;
public Student(String studentName, int money) {
this.studentName = studentName;
this.money = money;
}
public void takeBus(Bus bus) {
bus.take(1000);
this.money -= 1000;
}
public void takeSubway(Subway subway) {
subway.take(1200);
this.money -= 1200;
}
public void showInfo() {
System.out.println(studentName + "님의 남은 돈은 " + money + "원 입니다");
}
}
public class Bus {
int busNumber;
int passengerCount;
int money;
public Bus(int busNumber) {
this.busNumber = busNumber;
}
public void take(int money) {
this.money += money;
passengerCount++;
}
public void showBusInfo() {
System.out.println(busNumber + "번 버스의 승객은 " + passengerCount + "명 이고, 수입은 " + money + "원 입니다");
}
}
public class Subway {
int lineNumber;
int passengerCount;
int money;
public Subway(int lineNumber) {
this.lineNumber = lineNumber;
}
public void take(int money) {
this.money += money;
passengerCount++;
}
public void showSubwayInfo() {
System.out.println(lineNumber + "번 지하철의 승객은 " + passengerCount + "명 이고, 수입은 " + money + "원 입니다");
}
}
public class TakeTransTest {
public static void main(String[] args) {
Student studentJ = new Student("James", 5000);
Student studentT = new Student("Tomas", 10000);
Bus bus100 = new Bus(100);
Subway subwayGreen = new Subway(2);
studentJ.takeBus(bus100);
studentT.takeSubway(subwayGreen);
studentJ.showInfo();
studentT.showInfo();
bus100.showBusInfo();
subwayGreen.showSubwayInfo();
}
}
2-15. 復習してみましょう
public class Taxi {
String taxiName;
int money;
public Taxi(String taxiName) {
this.taxiName = taxiName;
}
public void take(int money) {
this.money += money;
}
public void showTaxiInfo() {
System.out.println(taxiName + " 수입은 " + money + "원 입니다.");
}
}
public class Student {
...
public void takeTaxi(Taxi taxi) {
taxi.take(10000);
this.money -= 10000;
}
}
public class TakeTransTest {
...
Student studentE = new Student("Edward", 20000);
Taxi newTaxi = new Taxi("잘 간다 운수택시");
studentE.takeTaxi(newTaxi);
studentE.showInfo();
newTaxi.showTaxiInfo();
}
2-16. 複数のインスタンスに共通する変数を宣言-静的変数
複数のインスタンスが共有する条件値が必要です.
ex)学号、四号など
static int serialNum~
2-17. 静的メソッドの実装、使用、変数の有効範囲
2-18. 静的適用-モノトーンモード
1つのインスタンスのみを作成するための設計モード.
2-19. (静態とSingletonモード)を復習してみましょう
public class Car {
public static int serialNumber = 10000;
private int carNum;
public int getCarNum() {
return carNum;
}
public void setCarNum(int carNum) {
this.carNum = carNum;
}
public Car() {
serialNumber++;
carNum = serialNumber;
}
}
public class CarFactory {
public static CarFactory instance = new CarFactory();
public CarFactory() {
}
public static CarFactory getInstance() {
if( instance == null) {
instance = new CarFactory();
}
return instance;
}
public Car createCar() {
Car car = new Car();
return car;
}
}
2-20. データを順番に一度に管理する-配列(Array)
2-21. オブジェクト配列の使用
オブジェクト配列の場合、要素として使用されるオブジェクトアドレス(4バイト、8バイト)のメモリのみが割り当てられます.
オブジェクト配列のコピー
...
System.arraycopy(library, 0, copyLibrary, 0, 5);
...
**複製
...
copyLibaray[0] = new Book();
copyLibaray[1] = new Book();
copyLibaray[2] = new Book();
copyLibaray[3] = new Book();
copyLibaray[4] = new Book();
for(int i = 0; i< library.length; i++) {
copyLibaray[i].setTitle(library[i].getTitle());
copyLibaray[i].setAuthor(library[i].getAuthor());
}
library[0].setTitle("나목");
library[0].setAuthor("박완서");
...
2-22. 2 D配列複写の使用
int[][] arr = new int[2][3];
データ型配列名=newデータ型[行数][列数]
2-23. 実装対象配列のクラスArrayList
Reference
この問題について([ジャワイン川]2週目学習ログ-2), 我々は、より多くの情報をここで見つけました https://velog.io/@devyeon/자바-인강-2주차-학습일지-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol