객체 지향

Jimin·2022년 8월 6일
0

JAVA

목록 보기
2/25

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

프로그램을 여러개의 독립된 단위인 객체들의 모임으로 파악하고자하는 것이다.

  • 자바는 대표적인 객체지향 프로그래밍 언어이다.
  • 프로그램을 객체라는 단위로 나누고 객체들간에 상호작용하는 것을 의미한다.
  • 부품에 해당되는 객체들을 먼저 만들고 하나씩 조립해서 완성된 소프트웨어를 만드는 기법

객체란?

객체의 넓은 의미

  • 객체(Obejct)는 우리 주변에 있는 모든 것이 될 수 있다.
  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고, 다른 것과 식별이 가능한 것.
  • 예를 들어, TV, 컴퓨터, 건물, 의자, 사람 등 모두 객체가 될 수 있다.
  • 객체는 속성(필드)과 동작(메서드)을 가진다.

객체의 좁은 의미

  • 객체란 클래스의 인스턴스나 배열을 말한다.
  • 컴퓨터 공학에서 객체: 변수, 자료구조, 함수, 메서드, 인스턴스 메모리 값
  • 객체는 자신만의 고유한 특성과 행동을 가지며 다른 객체들에게 행동을 요청하거나 정보를 주고 받는 등 상호작용을 하면서 존재한다.

클래스란?

  • 객체를 찍어내기 위한 틀, 설계도
  • 멤버 변수와 메서드를 가지는 객체를 만들기 위한 확장이 가능한 코드 양식

인스턴스란?

  • 객체는 소프트웨어 세계에 구현할 대상
  • 인스턴스는 설계도(클래스)에 따라 소프트웨어 세계에 구현된 실체

객체지향프로그래밍과 절차지향프로그래밍

객체지향프로그래밍

  1. 처리방식: 문제를 여러개의 객체로 나누어 처리
  2. 장점
    • 코드 재사용이 용이하다.
    • 유지보수가 쉽다.
    • 대형 프로젝트에 적합하다.
  3. 단점
    • 처리 속도가 상대적으로 느리다.
    • 객체가 많으면 용량이 커진다.
    • 설계시 많은 시간과 노력이 필요하다.
  4. 예: 자바, 파이썬, C#

절차지향프로그래밍

  1. 처리 방식: 문제를 여러개의 함수로 나누어 처리
  2. 장점
    • 처리 속도가 빠르다.
    • 실행 속도가 빠르다.
  3. 단점
    • 유지보수가 어렵다.
    • 대규모 프로젝트에 부적합하다.
  4. 예: C

객체지향프로그래밍의 특징

  1. 캡슐화
  2. 상속
  3. 추상화
  4. 다형성

캡슐화(Encapsulation)

  • 관련된 필드와 메소드를 하나로 묶고 실제 구현 내용을 외부로부터 감추는 기법 → 정보 은닉 가능
  • 외부에서는 공개된 메서드를 통해 접근할 수 있다.

상속(Inheritance)

  • 코드 공유 방법 중 하나
  • 상속이란 상위 클래스의 모든 것을 하위클래스가 이어 받는 것이다.
  • 이미 작성된 클래스의 특성을 그대로 이어 받아 새로운 클래스를 생성하는 기법이다.
  • 상속이 필요한 이유는 코드의 중복을 없애기 위함이다.
    → 코드의 중복이 많아지면 개발 단계와 유지보수에서 많은 비용이 소요되기 때문에 코드 중복은 피하는 것이 좋다.

추상화(Abstraction)

  • 추상화는 객체에서 공통된 속성과 행위를 추출하는 기법이다.
  • 실제 존재하는 객체들을 프로그램으로 만들기 위해 공통적인 특성을 파악하고 불필요한 특성을 제거하는 과정을 말한다.

다형성(Polymorphism)

  • 사전적인 의미로는 다양한 형태로 나타날 수 있는 능력을 의미한다.
  • 다형성은 같은 이름의 메서드를 호출하더라도 객체에 따라 다르게 동작하는 것을 말한다.
  • 상위 클래스의 동작을 하위클래스에서 다시 정의하여 오버라이딩하는 것 또한 다형성으로 볼 수 있다.
  • 하나의 클래스 내에서 이름은 같지만 서로 다르게 동작하는 메소드를 여러 개 만드는 오버로딩 또한 다형성으로 볼 수 있다.
profile
https://github.com/Dingadung

0개의 댓글