1. 

 

객체 지향 프로그래밍
클래스를 중심으로 프로그래밍의 구조를 만들어 나가는 프로그래밍 방법론을 객체 지향 프로그래밍 이라고 한다.

절차 지향 프로그래밍
메소드를 이용해서 작은 부품을 만들고 이를 결합해서 더 큰 프로그램을 만들어 나가는 기법

2. 

Method와 Variable의 조합들을 비슷한 유형들끼리 묶어놓은 것이 Class 이고
Class를 복제하여 새로운 데이터들을 입력해서 사용하기 위한 것이 instance 이다.

Class에서 호출해서 사용하는 Method는 단순하게 결과값만 얻고 싶을 때 쓰기 좋고
Instance는 좀 더 큰 스케일에서 몇몇 변수들의 값만을 바꿔서 다른 결과값을 얻고 싶을 때 사용하는 것 같다.

3. Method를 만들고 처음엔 메소드에 직접 -, * 을 입력하여 결과값을 얻었다. 

그 다음은 메소드에 직접 입력하는 대신 매개변수를 활용해서 메소드에 변수값을 직접 넣어줬다. printA("---") 
이렇게 하면 메소드를 직접 수정하는 대신 넣을 데이터만 변화시켜서 각각 다른 결과를 나타낼 수 있기 때문이다.

그 다음엔 변수값 을 한 번 정의한 후 변수 자체를 메소드에 입력했다. printA(delimiter)
이렇게 하면 변수를 정의했던 부분에서 한 번만 값을 고치기만 해도 해당 변수가 들어간 모든 코드의 결과를 한 번에 바꿀 수 있다.

그 다음엔 class 안에서 delimiter 를 정의하여 해당 class 전역에서 delimiter라는 변수를 사용할 수 있게 했다.
이렇게 하면 메소드를 더 간결하게 바꿔 사용할 수 있다.

4. 연관되어 있는 메소드들을 묶어서 한 class에 포함시킬 수 있다. 

소스코드를 만들때 소스코드와 똑같은 클래스 파일을 만들게 된다.
그러면 소스코드를 컴파일하여 실행하면 저 파일의 이름과 동일한 클래스를 찾아
클래스의 메인메소드를 실행하도록 약속이 되어 있다.

5. class 안의 변수만 변화시켜 쓰기 위해서 기존의 class를 복제(?) 하여 인스턴스를 만든다.
인스턴스를 만들어 사용하려면 기존 클래스 안에 있는 static을 지워줘야 한다.
클래스 소속의 메소드는 정의할 때 static이 붙고 인스턴스 소속의 메소드는 정의할 때 static이 붙지 않는다.

6. 
클래스 메소드 안에서는 클래스 변수에는 접근이 되는데 인스턴스 변수에는 접근할 수 없음
인스턴스 메소드 안에서는 클래스 변수와 인스턴스 변수 모두 접근 가능

class 소속의 메소드는 instance 안에서 값을 변화시키면 class안의 메소드와 instance의 메소드까지 다 변화된 값을 취하게 된다.
instance 소속의 메소드는 특정 instance 안에서 값을 변화시켜도 해당 instance 안의 값만 변하고 원본 class와 다른 instance에는 영향을 주지 않는다.

즉 class 소속 메소드는 나의 표현식으로 말하자면 
링크가 걸려있어서 변화가 생기면 class와 instance 모두 변화가 되지만
instance 소속 메소드는 독자적이기 때문에 변화를 준 instance만 변화하게 된다.

7.  
인스턴스화 할 때 초기에 주입할 필요가 있는 값을 전달하거나 초기에 작업을 수행하도록 할 때 필요한 것이 생성자(constructor)이다.
생성자는 클래스와 같은 이름을 갖게 되는데, 'static' 같은 소속도 적지 않고 리턴 데이터 타입(void와 같은)을 지정하지 않음
this는 클래스가 인스턴스화 됐을 때 인스턴스를 가르키는 역할을 한다.


8. 계산식들을 Accounting 이라는 클래스로 묶어보았다. 그리고 인스턴스를 만들어 보았는데
인스턴스를 만들 때 앞에 있는 static을 없애줘야 하는 메소드도 있으니 주의해야 한다.
생성자를 만들 때는 class의 이름과 같은 메소드를 만들고 매개변수를 받는다. this를 사용하여 인스턴스 소속의 값과 매개변수 값을 구분한다.

 


처음으로 뭔가 이해가 크게 안 되는 부분이 많았던 날...

여러번 짚고 넘어가야 할 파트인 것 같다.

'Java > Java의 정석' 카테고리의 다른 글

220220 Java - 중급  (0) 2022.02.20
220218 Java - 입문 복습 및 보충  (0) 2022.02.19
220217 Java - Interface / Exception / 입문수업 보충  (0) 2022.02.17
220216 Java - 상속  (0) 2022.02.17
220214 Java - Method  (0) 2022.02.14

+ Recent posts