Home C#4 | Object Oriented Programming
Post
Cancel

C#4 | Object Oriented Programming

Object Oriented Programming(객체 지향)

  • 객체 지향 프로그래밍(Object-Oriented Programming)은 객체(Object)를 중심으로 프로그램을 설계, 개발해 나가는 것
  • 객체 지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 함수(처리 부분), 변수(데이터 부분)를 하나로 묶어 객체(Instance)로 만들어 사용한다는 점
  • C#은 여러 언어의 장점을 결합한 객체지향 언어.
  • 언어의 사용을 단순화하여 숫자를 객체와 같이 처리하게 하고, Collection에 저장할 수 있게 해준다.
  • 박싱/언박싱의 개념을 가지고 있어 숫자를 객체로, 객체를 다시 숫자로 변경할 수 있게 해준다.
  • 객체로 사용할 필요가 없는 숫자는 단순 값으로 처리되어 효율적인 사용이 가능합니다.

Procedural Programming(절차적)

  • 객체지향 프로그래밍에 대조되는 것으로 생각하여 절차지향 프로그래밍으로 알고 있는 사람이 많은데, “절차지향 프로그래밍 = 절차적 프로그래밍” 이며, “절차적 프로그래밍”이 조금 더 맞는 단어이다.
  • 절차적 프로그래밍이란 Procedure(프로시저)를 이용하여 작성하는 프로그래밍 스타일이다. Procedure의 목록으로는 루틴, 서브루틴, 메소드, 함수 등이 있다. c# #간단히 보는procedure```의 목록

루틴: main 문 서브루틴: main문 밖에서 정의한 코드 블럭 중에 반환 값이 없는 것 함수: main문 밖에서 정의한 코드 블럭 중에 반환 값이 있는 것 ```

Object Oriented Programming(객체 지향) VS Procedural Programming(절차적)

  • 절차적 프로그래밍과 객체지향 프로그래밍은 반대되는 단어가 절.대.로 아님을 이해해야 한다.
 객체지향 언어절차적 언어
장점- 코드의 재사용성이 용이
- 개발이 간단
- 유지보수가 쉬움
- 대규모 프로젝트에 적합
- 처리속도가 빠름
- 컴퓨터의 처리구조와 비슷해 실행속도가 빠름
단점- 처리속도가 느림
- 객체에 따른 용량 증가
- 설계 단계에서 시간이 많이 소요
- 유지보수가 어려움
- 대규모 프로젝트에 부적합
- 프로젝트 분석이 어려움

객체 지향 프로그래밍의 5가지 설계 원칙

  1. 단일 책임 원칙 : 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.
  2. 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
  3. 리스코프 치환 원칙 : 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.
  4. 인터페이스 분리 원칙 : 클라이언트는 이용하지 않는 메서드에 의존하지 않도록 인터페이스를 분리해야 한다.
  5. 의존 역전 법칙 : 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안 된다.

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

    1. 캡슐화 : 연관있는 변수와 메소드를 묶어주는 작업을 말하며,
      • 클래스의 접근을 제한하는 것과 관계가 있다.
      • 접근 지정자(private, protected, public)를 통해 외부로부터의 접근을 제한하고, 객체 내에서만 접근이 가능하도록(정보 은닉) 해준다.
    1. 추상화 : 객체 지향에서 추상화란 객체에서 필요한 공통된 부분을 추출하는 것
      • 각각의 클래스는 공통점을 가지는데 추상적인 class로 둘의 공통된 부분을 묶을 수 있다.
    1. 상속 : 속은 부모 클래스로부터 공통된 변수와 함수, 인터페이스를 그대로 물려받는 것
      • 비슷한 객체들의 부모 클래스와 인터페이스를 정의하여 공통화 한 다음 상속받아 객체를 좀 더 다루기 쉽게 한다.
      • 추상화에서 각 클래스의 공통된 부분을 묶었다면, 부모 class를 상속받아 거기에 포함된 데이터를 그대로 사용할 수 있다.
    1. 다형성 : 다형성은 같은 종류의 클래스가 하나의 메시지에 대해 서로 다른 행동을 하는 것
      • 공통적인 class를 상속받았지만, 각자의 고유한 특징(함수)을 가진다.
      • 이렇듯 다형성을 통해 변경이 필요한 부분을 변경하여 사용할 수 있다.
      • 다형성은 Overriding, Overoading 형태로 제공된다.

참고 사이트

This post is licensed under CC BY 4.0 by the author.