호빵의 IT 개발소

[C/C#] 객체 지향 언어, 절차 지향 언어 본문

CS(전공지식)/프로그래밍언어

[C/C#] 객체 지향 언어, 절차 지향 언어

호빵Stack 2022. 6. 20. 01:48

객체 지향 언어(Object-Oriented Programming)

  • 객체 중심으로 프로그램 설계, 개발
  • 클래스를 이용하여 함수(처리), 변수(데이터)를 하나로 묶어 객체(instance)로 만들어 사용

장점

  • 코드의 재사용성 용이
  • 간단한 개발
  • 유지보수 쉬움
  • 대규모 프로젝트 적합

단점

  • 처리 속도 느림
  • 객체에 따른 용량 증가
  • 설계 단계에서 많은 시간 소요

 

객체 지향 프로그래밍 4가지

1) 캡술화

  • 연관있는 변수와 메소드를 묶어주는 작업
  • 클래스의 접근을 제한하는 것과 관계(접근 지정자 private, protected, public을 통해 외부로부터 접근 제한, 객체 내에서만 접근 가능)

2) 추상화

3) 상속

  • 부모 클래스로 부터 공통된 변수, 함수, 인터페이스를 그대로 물려 받는 것
  •  참조 : https://hobbangim.tistory.com/139?category=1080707

4) 다형성

  • 같은 종류의 클래스가 하나의 메세지에 대해 서로 다른 행동을 하는 것
  • 참조 : https://hobbangim.tistory.com/139?category=1080707

 

객체 지향의 5대 원칙(SOLID)

1) 단일 책임 원칙(Single Responsibility Principle)

  • 응집력
  • 하나의 클래스는 하나의 책임만을 가짐
  • 객체는 오직 하나의 변경의 이유만을 가짐

2) 개방 폐쇄 원칙(Open Closed Principle)

  • 객체는 확장에는 개방적, 수정에는 폐쇄적이어야 함

 

3) 리스코프 치환 원칙(Liscov Substitution Principle)

  • 자식클래스는 언제든지 부모클래스를 대체할 수 있음

 

4) 인터페이스 분리 원칙(Interface Segregation Principle)

  • 클라이언트에서 사용하지 않는 메소드는 사용해선 안 된다.
  • 인터페이스를 작게 나누어 만듬

 

5) 의존관계 역전 원칙(Dependency Inversion Principle)

  • 저차원 모듈고차원 모듈에 의존하면 안된다.
  • 추상화 된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상적인 것에 의존해야 한다.
  • 자주 변경되는 클래스에 의존하지 않는다.
  • 불안정한 저수준의 클래스에 의존하지 않는다.

 

 

*저차원 모듈 - 고차원 모듈의 기능을 구현하기 위해 실제로 구현한 하위 기능

*고차원 모듈 - 단일 기능을 제공하는 모듈,클래스, 변화하기 어려운 것, 거의 변화가 없는 것

 

 

인스턴스화

  • 클래스에서 정의한 것을 토대로 실제 메모리상에 할당되는 것

 

1) 클래스

  • 객체를 만드는 틀, 객체를 만들기 위한 설계도
  • 클래스를 만들때는 class "클래스명"{} 으로 만들 수 있다.

 

2) 객체

  • 속성(상태)과 기능(동작)을 가진 덩어리
  • 객체는 속성과 기능의 집합, 속성과 기능을 객체의 멤버라고 함
  • 속성(Property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
  • 기능(function) : 메서드(method), 행위(behavior), 함수(function)

 

3) 인스턴스

  • 생성된 객체, 어떤 클래스에 속하는 각각의 객체
  • 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함
  • 클래스로부터 객체를 만드는 과정을 인스턴스화라고 함
  • 클래스가 가지고 있는 메소드(method)를 모두 상속 받음

 

4) 객체와 인스턴스

  • 객체는 인스턴스를 포함하는 일반적인 의미
  • 인스턴스화 : 클래스로 부터 인스턴스를 생성하는 것
  • 클래스 -> 인스턴스화 -> 인스턴스(객체)

 

절차 지향 언어(Procedural Programming)

  • 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 함
  • 컴퓨터 처리 구조와 유사

장점

  • 처리 속도가 빠름
  • 컴퓨터의 처리구조와 비슷해 실행속도가 빠름

단점

  • 유지보수 어려움
  • 대규모 프로젝트에 부적합
  • 프로젝트 분석이 어려움

 

 

참조 : https://geukggom.tistory.com/100

https://blog.naver.com/PostView.naver?blogId=gitacademy01&logNo=222394033958&redirect=Dlog&widgetTypeCall=true&directAccess=false

 

Comments