전공/객체지향프로그래밍

[객체지향프로그래밍] 이론

Campus Coder 2023. 4. 17. 21:34
728x90
반응형

객체의 특징

특징 예시
크기 작은 물체, 큰 물체
형태 원, 사각형, 삼각형 등
색상 빨강, 파랑 노랑 등
무게 가벼운 물체, 무거운 물체
재질 나무, 금속, 플라스틱, 유리 등
기능 한 가지 기능, 여러 가지 기능
용도 가구, 전자제품, 운송 수단 등
위치 바닥에 놓인 물체, 책상 위에 놓인 물체, 벽에 걸린 물체 등
관계 서로 붙어 있는 물체, 쌓여 있는 물체, 연결된 물체 등
변화 녹아 없어지는 물체, 커지는 물체, 움직이는 물체 등

 

객체 지향의 핵심 개념

캡슐화

  • 데이터와 데이터를 처리하는 메소드를 하나의 논리적인 단위로 묶는 것
  • 데이터의 접근을 제한, 메소드를 통해 안전하게 데이터를 처리
자동차 클래스에서 앤진, 바퀴, 핸들 등의 상태
주행, 정지, 좌/우 회전 등의 행동
캡슐화하여 외부에서 직접 접근할 수 없도록 제어

 

상속

  • 부모 클래스가 가지고 있는 특성(변수, 메소드)을 자식 클래스가 물려받아 사용하는 것
  • 코드의 재사용성을 높이고 유지보수를 용이하게 해줌
동물 클래스를 상속받아 포유류, 조류, 양서류, 파충류 등의 클래스 생성

 

다형성

  • 동일한 메소드를 호출할 때, 객체에 따라 다른 방식으로 동작하는 것
  • 오버로딩과 오버라이딩을 통해 구현됨
동물 클래스에서 move() 메소드를 정의
포유류, 조류, 양서류, 파충류 등의 클래스에서 이 메소드를 오버라이딩
각각의 방식으로 움직일 수 있도록 함

 

추상화

  • 객체들이 가지고 있는 공통적인 특성을 추출하여 하나의 개념(추상 클래스, 인터페이스)으로 표현하는 것
  • 객체를 단순화하여 이해하기 쉽고 유연한 코드를 작성할 수 있도록 함
사람 클래스에서 이름, 나이, 주소 등의 정보를 추상화하여 사람 객체를 모델링할 수 있음
이를 통해 사람 클래스는 다른 클래스와 상호작용하며
자체적인 구현과 상태 유지

 

객체 지향 언어의 목적

소프트웨어 생산성 향상

  • 코드의 재사용성 향상
  • 코드의 유지보수성 향상
  • 모듈화, 추상화, 다형성, 상속 등의 개념을 제공해 코드의 단순화와 유연성을 높임

 

실세계에 대한 쉬운 모델링

  • 현실 세계의 객체와 유사한 방식으로 코드를 작성하여 프로그래머가 개발 대상을 이해하고 모델링하기 쉬움
  • 코드의 가독성을 높임
  • 대규모 소프트웨어 개발에 적합

 

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

절차 지향 프로그래밍

작업 순서 표현

작업을 함수로 작성한, 함수들의 집합

 

객체 지향 프로그래밍

객체들 간의 상호작용으로 표현

클래스 혹은 객체들의 집합으로 프로그램 작성

 

클래스와 객체

클래스

객체를 만들어내기 위한 설계도 혹은 틀

객체의 속성(state)과 행동(behavior) 포함

 

객체

클래스의 모양 그대로 찍어낸 실체

- 프로그램 실행 중에 생성되는 실체

- 메모리 공간을 갖는 구체적인 실체

728x90
반응형