[Java] 객체지향 프로그래밍

nemo·2022년 9월 2일
0

Java

목록 보기
4/4

객체지향 프로그래밍 (Object Oriented Programming)

객체지향 프로그래밍이란, 데이터를 추상화하여 상태와 행위를 가진 객체를 만들고, 이를 활용하여 프로그래밍하는 것을 말한다. 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다. 절차적 프로그래밍과 다르게 객체들 간의 유기적인 상호작용을 통해서 프로그램이 동작하게 된다. 대표적인 객체지향 언어로는 Java가 있다.

장점

  • 코드 재사용 용이
  • 유지 보수가 편리
  • 보안성 향상

단점

  • 처리 속도가 상대적으로 느리다.
  • 객체가 많으면 용량이 커질 수 있다.
  • 설계 시 많은 시간과 노력이 필요하다.

객체지향 키워드

클래스 & 인스턴스(객체)

클래스란 어떤 문제를 해결하기 위한 데이터를 만들기 위해 집단에 속하는 속성(attribute)과 행위(behavior)를 변수 메서드로 정의한 것이다.

추상화(abstraction)

추상화란 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다. 객체지향 프로그래밍에서 말하는 추상화는 객체들이 어떤 특징들이 있어야 한다고 정의하는 클래스를 설계하는 것 자체를 의미한다. 즉, 객체들의 공통된 특징을 파악해 정의하는 것을 의미한다.

캡슐화(encapsulation)

캡슐화란 데이터의 구조와 역할, 기능을 하나로 묶는 작업을 의미한다. 비슷한 기능의 객체들을 한 곳에 모으고 분류하기 때문에 코드 수정 시 관련 부분을 찾고 수정하기 용이하다.
추가적으로 캡슐화는 정보 은닉의 특징도 갖는다. 클래스에 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하도록 숨기고, 필요시 간접적으로 접근을 허용하는 것이 가능하다.

상속(inheritance)

상속이란 기존 상위 클래스(부모 클래스)에서 기능을 가져와 재사용하면서, 필요하다면 새로운 하위 클래스(자식 클래스)에서 해당 기능만 수정해서 사용할 수 있게 하는 것을 의미한다.
일반적으로 다중 상속은 잘 사용하지 않고 하나의 상속을 사용한다.

다형성(polymorphism)

다형성이란 상속과 연관 있는 개념으로, 하나의 변수명과 함수명 등이 상황에 따라 다른 의미로 해석될 수 있다는 의미이다. 즉, 오버라이딩과 오버로딩이 가능하다는 뜻이다.
오버라이딩은 하위 클래스 안에서 같은 이름의 메서드를 사용하지만 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있도록 하는 것을 말한다.

객체지향 프로그래밍은 어떤 객체들을 추상화하여 공통점을 찾고, 그것을 클래스라는 캡슐에 캡슐화하여 한 곳으로 모은다. 이를 새로운 클래스가 상속받아 재사용이 가능하며, 상속받은 클래스는 다형성을 통해 기능을 수정 또는 추가할 수 있다.

0개의 댓글