상세 컨텐츠

본문 제목

[JAVA] 객체지향 (OOP)의 정의와 특징

국비/[JAVA] 관련 상식

by 개발성훈 2020. 4. 22. 18:54

본문

자바를 공부하면서 가장 많이 듣는 말은 객체지향언어라는 것이다.

C언어는 절차지향이라는 것을 많이 들었다.

절차지향언어인 C언어와 객체지향언어의 차이는 무엇일까?

 

1.순차지향 프로그래밍 

절차지향은 순자척인 처리방식에따라 전체적인 프로그램이 연결되도록 하는 방식이다. 이런 순차적인 처리방식은 설계또의 순자처럼 위에서부터 순차적으로 코드가 실행되기때문에 빠른속도로 구동이 된다는 장점이 있다. 하지만 이는 완성된 코드의 수정이 불가능하다는 것과 코드의 재사용화가 어렵다는 단점이 존재한다. 또한 소프트웨어속도 자체가 빨라지면서 굳이 순차지향 언어를 선택해야할 이유를 줄어든 것도 사실이다.

 

2.객체지향 프로그래밍

그렇다면 자바, 파이썬 등에서 사용하는 방식인 객체지향 프로로그래밍인란 무엇일까?

프로그램은 필요한 데이터들의 묶음을 하나의 객체로 만들고, 이 객체들간의 유기적인 관계를 통해서 프로그램을 만드는 방법의 의미한다.

객체지향 언어는 상대적으로 순차지향언어보다 처리속도가 느리다는 단점이 있지만. 유지보수와 코드의 재사용이 쉽다는 장점들이 있어 많이 사용되고있다. 이런 객체지향프로그램을 OOP(Object-oriented programming)라고 부르고 있으며 객체지향프로그래밍의 4가지 특성은 다음과 같다.

 

1.추상화

 

2.캡술화

 

3.상속

 

4.다형성

(1) 추상화 

클래스에서 필요한 공통적인 기능과 속성을 묶어 이름을 부여하는 것을 의미한다.

객체지향적 관점에서 클래스를 정의하는 것이 바로 추상화라고 볼 수 있다.

 

(2) 캡술화

변수와 함수를 같은 목적으로 하나로 묶는 것을 의마한다. 캡슐화의 특징 중 하나는 데이터를 외부에서 직접 접근하는 것을 막기위해 은닉시켜야 하는 것이다. 따라서 캡슐화에 성공했다는 것은 은닉화에 성공했다는 의미이기도하다.(자바에서는 private 접근자를 사용하여 캡슐화를 진행한다.)

 

(3) 상속

객체지향을 공부하다보면 클래스에도 부모클래스와 자식클래스로 나누어 볼 수 있다. 상속은 자식클래스가 부모 클래스의 속성과 기능을 그대로 전달받아 사용할 수 있게 해주는 개념이다. 또한 자식클래스는 그 필요에 따라 부모 클래스에서 상속받은 기능을 자식클래스에 맞는 형태로 재수정 할 수 있다.

 

(4) 다형성

다형성은 하나의 변수명, 함수가 상황에 따라 기능을 확장하거나 변경할 수 있는 것을 의미한다. 자바에서는 오버라이딩과 오버로딩의 형태로 자주 활용하게 되며 위에서 말한 상속에서 부모클래스의 기능을 자식클래스에 맞는 형태로 재수정하는 것 역시 오버로딩을 활요한 방법이다.

 

오버라이딩 : 부모클래스에 메서드와 같은 이름으로 사용되며, 매개변수를 재정의하여 함수를 활용하는 것 

오버로딩 : 동일한 이름의 함수명을 여러개로 정의하고 매개변수의 타입과 갯수를 다르게하여 매개변수에 따라 다르게                호출 할 수 있게 하는 것으로 상속에서 많이 사용된다.

 

참조 : https://blog.naver.com/michael_cho77/221573338852

관련글 더보기