[ cs ] Object Oriented Method

2025. 9. 10. 03:09·CS 및 기본 개념

 

1. Object Oriented Method


1-1. 정의


Object Oriented Method : 소프트웨어 시스템 아키텍처를 분석, 분리 및 모듈화하는데 사용하는 일련의 기술

객체를 기반으로 시스템을 구조화하는 방법론이다.

1-2. Object Oriented Method를 사용하는 이유


일반적인 상황에서 시스템은 변경 및 확장되지만, 내부 오브젝트나 클래스는 유지되는 경향이 있다.

따라서 대규모 시스템이나 변경이 잦은 시스템에서는 유지보수성과 확장성을 높이기 위해서 Object Oriented Method를 사용한다.

1-3. Object Oriented Design


정의

  • 소프트웨어 아키텍처를 분해 및 설계하는 방법론

특징

  • 여러 시스템과 관계 있는 객체를 중심으로 소프트웨어를 설계한다.
  • 사용하는 프로그래밍 언어와 비교적 독립적인 방법이다.

핵심 활동 : CRC( Class - Responsibility - Collaborator ) 카드 모델링

  • 클래스, 책임 (역할), 협력자 (연관 클래스)로 구성됨
  • user, analyst, developer가 참여함
CRC : Calculator Class
Responsibility ( 책임 기능 ) Collaborator ( 연관 클래스 )
덧셈, 뺄셈, 곱셈, 나눗셈 Math, Number

1-4. Data Flow Diagram


목적

  • 애플리케이션 도메인의 기능적 뷰를 보여주기 위해서 사용

사용

  • 비즈니스 프로세스와 프로세스 간 데이터 흐름을 설명함

구성 요소

구성 요소 역할 심볼
process 데이터를 입력 받아서 출력을 생성 원
data flow 데이터의 이동을 나타냄 화살표
data store 데이터베이스나 파일 등의 저장소 저장소 기호 ( = )
external agent 시스템에 필요한 입력과 출력을 제공하며 상호작용하는 사람 직사각형

 

2. Object Oriented Programming


2-1. 정의


구현 관점에서 시스템을 구조화하는 것이다.

소프트웨어 시스템을 추상화 / 상속 / 다형성을 기반으로 구축한다.

OOP는 프로그래밍 언어와 구현 문제에 관련되어 있다.

 

보다 자세한 내용은 아래에서 확인 가능하다.

https://kym8821.tistory.com/49

 

[ cs ] 객체 지향 프로그래밍( OOP ) 4가지 특징

1. 객체 지향 프로그래밍1-1. 정의와 장점객체 지향 프로그래밍(OOP)은 순차적 프로세스에서 벗어나서 프로그램을 여러 독립적인 객체들의 유기적인 결합으로 바라보는 패러다임이다. 객체 지향

kym8821.tistory.com

2-2. Object Oriented Programming vs Procedure Oriented Programming


  OOP POP
설계 접근 bottom - up ( 클래스 기반이므로 ) top - down
프로그램 분할 방법 object  함수 및 기능
데이터 객체가 데이터를 소유함 함수에 의해 데이터가 전달됨
우선순위 데이터 중심 기능 중심
데이터 전달 방식 message passing ( 객체 메서드 호출 ) parameter passing
데이터 은닉 가능 불가능
상속 가능 불가능
연산자 오버로딩 가능 불가능

2-3. OOP 특징 1 : 추상화 ( Abstraction )


추상화는 오브젝트의 행동과 구현을 분리하는 것

추상화는 인스턴스를 통해 필요한 기능만 정의하기에 시스템의 복잡도를 관리하기 좋음

2-4. OOP 특징 2 : 캡슐화 ( Encapsulation )


캡슐화는 객체의 데이터와 내부 구조 등을 외부에 노출시키지 않는 것이다.

객체와 외부 간 상호작용은 오직 public interface를 통해서만 이루어진다.

2-5. OOP 특징 3 : 상속 ( Inheritance )


기존에 구현한 객체를 확장하는 기능에서 객체를 재사용하는 전략이다.

상위 클래스에서 공통 속성과 메서드를 포착하고, 하위 클래스에서 이를 확장하여 구현하는 구조이다.

 

장점

  • 재사용을 통한 구현 단순화
  • 재사용되는 구현체의 확장 및 수정이 용이함

단점

  • 하위 클래스에 상위 클래스 내부를 일부 노출하기에 캡슐화가 깨짐 ( public, protected )
  • 상위 클래스 구현이 변경되면 하위 클래스 구현도 변경해야할 수 있음
  • 런타임 동안에 상위 클래스의 구현을 변경할 수 없음

상속 규칙 ( 아래 사항을 모두 만족할 때만 상속을 쓰는게 좋음 )

  • 하위 클래스와 상위 클래스는 is-a 관계이어야 함
  • 하위 클래스의 인스턴스가 다른 하위 클래스가 되면 안됨
  • 하위 클래스는 상위 클래스의 역할을 확장해야함
  • 하위 클래스가 유틸 클래스를 확장해서는 안됨
  • 상속은 도메인 클래스의 특수화에만 사용해야 함

2-6. OOP 특징 4 : 다형성


상위 클래스의 인스턴스를 하위 클래스처럼 대할 수 있는 특징을 말한다.

상위 클래스와 하위 클래스 간 관계 때문에 가능함

  • 객체의 행위는 인터페이스에 의해서 정해져 있음
  • 객체는 인터페이스에 의해서 구현됨

2-7. 인터페이스와 추상 클래스


인터페이스

인터페이스 구현 클래스는 인터페이스의 모든 메서드를 구현해야함

Java에서 클래스와 인터페이스는 다대다 관계임

자식 인터페이스는 부모 인터페이스의 서브 타입이며, 자식 인터페이스의 구현체는 동시에 부모 인터페이스의 구현체임

추상 클래스

하나 이상의 메서드가 정의되지 않은 인스턴스화가 불가능한 클래스

인터페이스와 비슷하지만, 차이점이 분명함

  인터페이스 추상 클래스
연관 요소 수 여러개의 인터페이스 구현 가능 하나의 추상 클래스만 상속 가능
non-abstract 메서드 non-abstract 메서드 보유 불가 non-abstract 메서드 보유 가능
인스턴스 변수 공통 변수는 가질 수 있지만, 인스턴스 변수는 가질 수 있음 인스턴스 변수를 가질 수 있음
생성자 없음 가질 수 있음

 

3. 마무리


이전에는 OOP의 4가지 특징에 대해서 알아보았고, 이번에는 Object Oriented Method와 OOP에 대해서 알아보았다.

 

추가로 이전에 OOP에 대해서 공부하면서 빠진 부분들에 대한 보충 설명을  추가했다.

 

OOP는 역시 간단한 개념인 것 같지만 이를 잘 사용하는 것은 높은 수준의 지식과 경험을 요구하는 것 같다.

 

앞으로도 이러한 부분에 대해서 더 공부해볼 예정이다.

'CS 및 기본 개념' 카테고리의 다른 글

[ SQL ] 인덱스와 동작 원리  (0) 2025.11.05
[ cs ] Dependency Management  (0) 2025.09.15
[ cs ] 객체 지향 프로그래밍( OOP ) 4가지 특징  (1) 2025.09.04
[ Java 공식문서 ] Lock과 Executor  (1) 2025.08.20
[Java 공식문서] 불변 객체  (4) 2025.08.15
'CS 및 기본 개념' 카테고리의 다른 글
  • [ SQL ] 인덱스와 동작 원리
  • [ cs ] Dependency Management
  • [ cs ] 객체 지향 프로그래밍( OOP ) 4가지 특징
  • [ Java 공식문서 ] Lock과 Executor
코드래곤
코드래곤
코드래곤 님의 블로그 입니다.
  • 코드래곤
    코드래곤 님의 블로그
    코드래곤
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • 알고리즘 (3)
        • 그리디 (1)
        • 그래프 (2)
      • 시스템 설계 (6)
      • CS 및 기본 개념 (17)
      • Docker (5)
      • Spring (23)
        • 백준 서비스 구현하기 (1)
        • 기초 개념 (14)
        • MSA (2)
        • JPA (1)
      • Dart (3)
      • Flutter (1)
      • Kubernetes (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
코드래곤
[ cs ] Object Oriented Method
상단으로

티스토리툴바