티스토리 뷰

JAVA

TIL (1) 객체지향프로그래밍(OOP)

나죽나강 2021. 5. 26. 00:43

/* 잘못된 정보와 내용은 언제든지 가르쳐주세요! */

 

객체지향 프로그래밍 (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도 마찬가지로 굳이 예를들자면 자료에 무언가 더하거나 빼고 준다든지가 가능하다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함