상세 컨텐츠

본문 제목

생활코딩 java 160강 (67강~78강. 객체지향 (1))

정보 리뷰/생활코딩 Java

by NayC 2021. 4. 11. 09:50

본문

728x90

함수에서 객체지향으로의 이유 설명 여기★

1000줄씩이라고 생각하면...
-> 중복제거가 첫번째! 메소드를 생성해주자.

리팩토링을 해줄수록 좋은 코드가 된다.

문제는 코드량이 많아지면
위에 rght가 변수 선언된줄 모르고 중간에 '권리'라는 뜻으로 코드가 추가된다거나 sum도 '서머리'로 추가된다거나, 그리고 데이터 부분인 변수와 함수 메소드 부분이 떨어지게 된다는 문제가 발생.
(그래서 개발자들은 화이트보드에 left, right이란거니까 절대 쓰지 마시오! 라던가ㅎㅎㅎ 아니면 이름을 좀 더 구체적으로 cal_left등으로 바꾸기도하나...기획자들이 문제를 해결해주기로 한 것!)

c1 을 구체화된 객체/인스턴스라고 부르네 생활코딩님은
(내가 배운건 이름표!)

객체를 독립적인 프로그래밍으로 생각할것!
변수와 메소드를 지니고있다.

* main부터 읽는게 구조를 살피기에 좋다.
* 우항부터 실행되서 좌항에 대입되는것

1)new Calculator로 객체를 만들어준다.
2) c1 이라고 부른다. (생활코딩에 따르면 인스턴스)
3) c1.setOprands를 실행한다.(실행할거다)
ㅡ 10, 20보내주고
ㅡ 받은 left 10값을
this.left에 저장해서 객체 Calculaotr 내에서 다 접근할 수 있도록 해준다. 인스턴스의!!! right, left

 ★이 이미지 최고다ㅜㅜ♥

class Calculator는 설계도인것
new Calculator 하고 인스턴스 c1, c2,..를 만들어주면 (이름표라고 부르는것보다 인스턴스라고 하는게 이해가 더 쉽네) -> 각각 변수 다른게 넣어서는 설계도의 공통된 부분을 이용 가능하게 되는 것!!!

인스턴스는 설계도를 가지고 만든 구체적인 제품. (여러개 만들 수 있는 것)

인스턴스마다 다른값을 가지는 인스턴스 변수
class내에서 공통적으로! 사용되는 클래스 변수

클래스 변수는 앞에 static을 붙여서 구분해준다.
(static의 뜻을 생각하면 직관적으로 이해 가능)

클래스 변수는 인스턴스뿐만 아니라

클래스로도 접근가능하다.

(main에서) base값이 없으면 0 값을 가지겠다는것.

(main에서 base값을 10으로 줬으니 결과는 80이 되는것)

인스턴스 변수(Instance Value) 와 클래스 변수가 같이 쓰이고있는걸 보고있다~~

누구나 다 아는 파이값을 (만약 main에서 딱 파이값만 부른다고 생각했을때)
굳이 (클래스를) new해서 c.PI할 필요없이 그냥 Calculator.PI해주면 된다는것. 클래스변수는!

이렇게 인스턴스 만들 때는 인스턴스마다 각각 값을 지정해주어 세팅해줄때.
만약 10, 20 값 외에 다른 값을 세팅해줘야하면 c2 이런식으로 새로운 인스턴스를 줘야함

근데 공통된 값을 세팅해서 활용하는게 아니라 단순히! sum, avg 기능 이용하고 직접 값을 넣어줘서 결과물을 얻고 싶으면

클래스 소속의 메소드를 활용한다.
인스턴트 음식처럼 한 번 사용할걸 가지고 굳이 인스턴스 만들어서 공통 세팅없이, 메모리 사용하지 않겠다~는 느낌


★★

클래스 변수는 1
인스턴스 변수는 2

클래스 메소드가 ㅡ 클래스 변수에 접근 O

클래스 메소드가 ㅡ 인스턴스 변수에 접근 X

인스턴스 메소드가 ㅡ 클래스 변수에 접근 O

728x90
반응형

관련글 더보기