티스토리 뷰
/* 잘못된 정보와 내용은 언제든지 가르쳐주세요! */
객체지향 프로그래밍 (OOP)
# 객체지향 프로그래밍이란?
> 프로그래밍 개발 방법론 중 하나
> 사람이 현실을 바라보는 방법을 개발에 접목
# 객체란 무엇인가?
> 객체는 현실의 무언가에 대응하는 개념
Q. 클래스 vs 객체(Object) vs 인스턴스
# 클래스 :
> 어떤 문제를 해결하기 위한 데이터를 만들기기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것
> 즉, 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념이다
> ex) 바퀴, 창문, 트렁크등 차들의 속성과 행위를 만들어 낼수 있는 공장 시스템
# 인스턴스(객체) :
클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 프로그램에서 사용되는 데이터
> 즉, 클래스에 하나의 물체나 인격을 부여하여 세상에 존재하는 유일무이한 사물
> ex) 내가 3대의 차가 있다면 페라리, 벤츠, 아우디
# 객체 지향 프로그래밍의 장, 단점
- 장점
> 코드 재사용이 용이
> 유지보수가 쉬움
> 대형 프로젝트에 적합
> 직관적으로 이해가 쉽다
- 단점
> 처리속도가 상대적으로 느림 (system.out.print)
> 객체가 많으면 용량이 커질 수 있음
> 설계시 많은 시간과 노력이 필요
# 객체 지향 프로그래밍 키워드 5가지
1) 클래스 + 인스턴스(객체)
2) 추상화
3) 캡슐화
4) 상속
5) 다형성
# 추상화
> 구체적인 것을 분해해서 관심영역에 대한 특성만을 가지고 재조합하는 것
# 캡슐화
> 코드를 재수정 없이 재활용하는 것.
> 캡슐화를 통해 관련된 기능과 특성을 한 곳에 모으고 분류하기 때문에 재활용이 원활해졌다.
> 객체 지향 프로그래밍에서 기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는것이 캡슐화다.
> Call by Value = 기본 자료형 변수는 값을 값 자체로 판단한다
> Call by Reference = 참조 자료형 변수는 값을 주소, 포인터로 판단한다
> 지역 변수는 개발자가 별도로 초기화하지 않으면 쓰레기 값을 갖게 된다는 것
> 클래스 속성과 객체 속성은 별도의 초기화를 해주지 않으면 0 or null 값을 가진다.
# 상속
> 상속은 부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게하고 기능의 일부분을 변경해야 할 경우 상속받은 자식클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있게 하는 것이다.
# 다형성
> 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것이다.
> 즉 오버라이딩(Overriding), 오버로딩(Overloading)이 가능하다는 얘기다.
> 오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는것.
> 오버로딩 : 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.
# getter, setter 를 사용하는 이유는 무엇인가요?
> 멤버변수에 직접접근하지 못하게 private으로 접근지정자를 설정하고 public으로 getter, setter 메서드를 만드는 것을 많이 해왔다.
> 그러면서 이럴꺼면 어차피 아무나 접근가능한데 왜 private을 할까? 라고 생각했었다.
> 결론부터 말하면 getter, setter를 사용하면 메서드를 통해서 접근하기 때문에, 메서드 안에서 매개변수같이 어떤 올바르지 않은 입력에 대해 사전에 처리할 수 있게 제한하거나 조절할 수 있기 때문이다.
> 예를들면 setter에서 유효범위를 넘은 정수가 들어왔을 때의 처리를 하고나서 set하거나 예외처리를 해버릴 수 있는 것이다.
> getter도 마찬가지로 굳이 예를들자면 자료에 무언가 더하거나 빼고 준다든지가 가능하다.
'JAVA' 카테고리의 다른 글
TIL(8) 객체 - 앨런케이의 정의(2) (0) | 2021.05.27 |
---|---|
TIL(7) 객체 - 앨런케이의 정의(1) (0) | 2021.05.26 |
TIL (6) UML 다이어그램 (0) | 2021.05.26 |
TIL (5) 클래스, 객체, 인스턴스 (0) | 2021.05.26 |
TIL (4) 클래스 생성 시 실행 순서(초기화 블럭, Static블럭, 생성자) (0) | 2021.05.26 |