[CS-Challenge : 객체지향언어]

SELOG·2024년 2월 2일
0

CS-CHALLENGE

목록 보기
5/5

:) Java의 가장 큰 특징인 "객체지향언어"에 대해 설명할게욥

  • 객체지향언어(Object-Oriented Language, OOL)는 프로그래밍의 한 패러다임으로, 데이터와 함수를 객체로 캡슐화하여 소프트웨어의 설계와 구현을 단순화하는 것을 목표로 한다.
  • 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체의 집합으로 모델링하여, 프로그램의 구조와 동작을 이해하고 관리하기 쉽게 만든다.

객체지향언어

  • 객체지향언어는 객체의 개념을 기반으로 하는 프로그래밍 언어이다.

    객체는 데이터(속성)와 그 데이터를 처리하는 함수(메소드)를 하나의 단위로 묶은 것이다.

    • 클래스라는 구조를 통해 객체의 틀을 정의하고, 이 클래스를 기반으로 객체(인스턴스)를 생성하여 프로그램을 구성한다.

특징

캡슐화(Encapsulation)

  • 캡슐화는 객체의 데이터(속성)와 이 데이터를 조작하는 메소드(함수)를 결합하여 하나의 단위, 즉 '클래스'로 묶는 것이다.

  • 이 과정에서 중요한 것은, 객체의 세부 구현을 외부에서 직접 접근할 수 없도록 숨기고(은닉), 필요한 정보나 기능만을 외부에 공개하는 것것(인터페이스 제공).

    ex) 자동차 객체를 생각해보면, 엔진의 세부 사항을 직접 조작하기보다는, 가속하거나 멈추는 행위를 메소드로 제공하여 안전하게 차를 운전할 수 있게 한다다.

상속(Inheritance)

  • 상속은 기존 클래스(부모 클래스)의 속성과 메소드를 새로운 클래스(자식 클래스)가 물려받아 사용할 수 있게 하는 메커니즘이다.

  • 이를 통해 코드의 재사용성을 높이고, 유지보수의 편리성을 제공한다.

    ex) '동물' 클래스에는 '먹기'와 '움직이기' 같은 기본적인 메소드가 정의되어 있고, '고양이' 클래스는 '동물' 클래스로부터 이 메소드들을 상속받아 추가적인 기능(예: '야옹 울기')을 구현할 수 있다.

다형성(Polymorphism)

  • 다형성은 같은 이름의 메소드가 서로 다른 클래스에서 다른 작업을 수행할 수 있도록 하는 기능이다.
  • 다형성을 통해 프로그램의 유연성을 증가시킬 수 있다.

    ex) '그리기' 메소드가 '원', '사각형', '삼각형' 클래스에 각각 구현되어 있을 때, '그리기' 메소드를 호출하면 각 객체의 형태에 맞는 그림을 그리게 된다. 이는 같은 인터페이스를 통해 다양한 방식의 실행을 가능하게 한다.

    ex) "소리내기"라는 동일한 메소드를 가진 여러 동물 객체(개, 고양이, 새)가 있을 때, 각 동물은 "멍멍", "야옹", "짹짹"처럼 자신만의 고유한 소리를 낼 수 있다. 이렇게 하나의 메소드가 여러 형태로 구현되는 것이다.

추상화(Abstraction)

  • 추상화는 복잡한 실제 세계의 상황을 단순화하여 모델링하는 과정에서, 필요한 핵심적인 특성만을 추출하여 프로그램에 반영하는 것이다.
  • 이를 통해 불필요한 세부 사항을 제거하여 복잡도를 관리할 수 있다.

    ex) '은행 계좌' 객체를 설계할 때, 계좌의 '잔액 조회', '입금', '출금' 같은 핵심 기능만을 포함시키고, 계좌의 내부 구조나 처리 방법은 숨긴다.

장점

재사용성

  • 객체와 클래스를 재사용함으로써 개발 시간을 단축하고 효율성을 높일 수 있다. 코드의 중복을 줄이고, 이미 검증된 객체를 사용하여 신뢰성을 향상시킬 수 있다.

유지보수성

  • 코드의 수정이 필요할 때, 해당 객체만을 수정하면 되므로 다른 부분에 미치는 영향을 최소화할 수 있다.

확장성

  • 새로운 기능이 필요할 때, 기존의 코드를 쉽게 확장할 수 있다. 상속과 다형성을 활용하여 기존의 기능을 유지하면서 새로운 기능을 추가할 수 있다.

모듈성

  • 프로그램을 독립적인 객체로 나누어 개발할 수 있어, 개발 과정에서 복잡도를 관리하기 쉽다. 팀 내에서 작업을 분할하고, 병렬 개발을 용이하게 한다.

단점

실행 속도

  • 객체지향 프로그램은 때때로 절차 지향 프로그램에 비해 실행 속도가 느릴 수 있다. 객체 간의 상호작용과 다형성 처리가 추가적인 처리 시간을 요구할 수 있다.

    객체지향 프로그래밍은 데이터와 기능을 객체로 묶어 관리하는 반면, 절차 지향 프로그래밍은 프로그램을 함수의 집합으로 보고 순차적으로 실행하는 접근 방식

메모리 사용

  • 객체지향 프로그래밍은 객체를 많이 사용하기 때문에, 절차 지향 프로그래밍에 비해 더 많은 메모리를 사용할 수 있다. 각 객체의 속성과 메소드 정보를 저장해야 하기 때문.
profile
금융 IT 전문가가 될거야

0개의 댓글