Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 스택영역
- map
- rookiss
- 스택
- 트리
- 반복문
- std::unordered_map
- 리스트
- 멀티쓰레드
- 기술면접
- 해쉬맵
- static_cast
- MonoBehaviour
- 프래그멘테이션
- c#
- Queue
- 공부
- vector
- 힙영역
- 벡터
- 큐
- 인프런
- 객체지향
- list
- std::map
- 차이점
- thread
- 알고리즘
- 자료구조
- 배열
Archives
- Today
- Total
호빵의 IT 개발소
[C/C#] 객체 지향 언어, 절차 지향 언어 본문
객체 지향 언어(Object-Oriented Programming)
- 객체 중심으로 프로그램 설계, 개발
- 클래스를 이용하여 함수(처리), 변수(데이터)를 하나로 묶어 객체(instance)로 만들어 사용
장점
- 코드의 재사용성 용이
- 간단한 개발
- 유지보수 쉬움
- 대규모 프로젝트 적합
단점
- 처리 속도 느림
- 객체에 따른 용량 증가
- 설계 단계에서 많은 시간 소요
객체 지향 프로그래밍 4가지
1) 캡술화
- 연관있는 변수와 메소드를 묶어주는 작업
- 클래스의 접근을 제한하는 것과 관계(접근 지정자 private, protected, public을 통해 외부로부터 접근 제한, 객체 내에서만 접근 가능)
2) 추상화
- 객체에서 필요한 공통된 부분을 추출하는 것을 의미
- 참조 : https://hobbangim.tistory.com/137
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
'CS(전공지식) > 프로그래밍언어' 카테고리의 다른 글
| [C/C#]델리게이트(delegate), 이벤트 (event) (0) | 2022.06.20 |
|---|---|
| [C/C#] 지역 변수, 전역 변수 (0) | 2022.06.20 |
| [C/C#] namespace, partial (0) | 2022.06.20 |
| [C/C#] 상속, 다형성 (0) | 2022.06.19 |
| [C/C#] 구조체와 클래스 (0) | 2022.06.19 |
Comments