drexqq
[Java, 자바] OOP(Object Oriented Programming) 본문
Java의 객체지향(OOP)에 대해서 알아보겠다.
자바프로그래밍하면 객체지향프로그래밍 OOP(Object Oriented Programming)이라는 말을 공부하기 전부터 여기저기서 많이 주워들었다.
객체지향프로그래밍의 특성은으로 크게 캡슐화, 추상화, 다형성, 상속성 정도로 생각하면 쉽다.
그러므로 OOP라고하면 캡슐화, 추상화, 다형성, 상속성이 군대시절 총기번호처럼 튀어나오도록 머리에 각인시켜보자.
1. 캡슐화
캡슐화란 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.
이름 그대로 캡슐처럼 만드는 거라고 생각한다.
따라서 클래스를 생성할 때 생성한 클래스에서 만들어진 객체가 특정한 목적을 가지고 있어야 하고 사용해야할 변수와
그 변수를 사용하는 특정한 메소드를 관련성 있게 클래스에 구성해야한다.
한마디로 쓸거만 넣어 두어야한다고 본다.
말로 풀어보자면 은행이라는 클래스에는 잔고라는 변수가 있고 잔고를 수정할 수 있는 메소드가 있다고 생각해보자.
잔고라는 변수가 만약 public 으로 선언되어있다고 치자.
얼마없는 나의 잔고가 정체모를 사람에 의해 모두 사라질 수도 있다.
따라서 잔고라는 변수를 바로 접근할 수 없도록 private로 선언하고 데이터를 보호하는 것이다.
이렇게 보호된 변수는 getter나 setter등의 메서드를 통해서만 간접적으로 접근이 가능하도록 하는 것이 바로 캡슐화의 중요한 목적중 하나인 은닉화라고 한다.
2. 추상화
추상화란 일단 큰 틀의 클래스를 생성하고 그 안에 공통적인 요소나 필수적인 요소들이 들어갔으면 하는 바램에서 만든 것이 추상클래스이다.
예를 들자면, 자동차 브랜드의 종류라고 생각해보자.
BMW, 아우디, 벤츠, 현대, 기아 등등.. 일일이 적기도 귀찮을 정도로 많은 종류의 브랜드들이 있다.
위에 나온 모든 브랜드들을 일일이 하나하나씩 클래스화 하고 그 안에 들어가는 제품들을 변수로 선언하고 필요한 메서드들을 각각 따로 만든다..? 절대 안한다.
따라서 위에서 나온 브랜드들은 모두 자동차를 만들고 그 자동차에 해당하는 공통적인 요소를 추출하는 추상화를 거쳐
그에 따른 변수와 메소드를 만드는 과정 자체가 추상화라고 볼 수 있다.
3. 다형성
Java의 다형성은 오버로딩(Overloading)과 오버라이딩(Overriding)이라고 생각한다.
오버로딩과 오버라이딩은 중요하다고 생각되어 따로따로 게시글에서 다룰 생각이다.
간단히 개념만 설명하고 넘어가자면
오버라이딩은 상위클래스에서 만들어진 메서드를 자신의 필요요건에 따라서 재구성해서 사용하는 것을 말한다.
오버로딩은 같은이름의 메서드를 사용하지만 각 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현할 수 있게 만드는 개념이다.
4. 상속성
상속성이란 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념이다.
기존클래스에 기능을 가져와 재사용할 수있으면서도 동시에 새롭게 만든 클래스에 새로운 기능을 추가할 수 있게 만들어 준다.
'Back-End > Java' 카테고리의 다른 글
[Java, 자바] final (0) | 2020.06.03 |
---|---|
[Java, 자바] Overriding(오버라이딩) (0) | 2020.06.03 |
[Java, 자바] Overloading(오버로딩) (0) | 2020.06.01 |
[Java, 자바] BufferedReader, BufferedWriter (0) | 2020.05.29 |
[Java, 자바] 함수(function, method), 가변인수 (0) | 2020.05.27 |