일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- stride
- unity
- 유니티
- AINCAA
- OWASP
- Trap
- link layer
- 컴퓨터 네트워크
- frequency-domain spectrum analysis
- OSI 7계층
- protection
- MLFQ
- SDLC
- polymorphism
- 운영체제
- 배경 그림
- 메카님
- 유스케이스
- DSP
- DP
- Security
- SJF
- 게임개발
- MAC
- STCF
- information hiding
- 게임 개발
- FIFO
- Unity #Indie Game
- Waterfall
- Today
- Total
다양한 기록
OOP #3 : Class, Instance, Polymorphism 본문
클래스
- 객체 유형은 객체의 범주
- 클래스는 객체 유형의 소프트웨어 구현
- 클래스는 객체들의 집합
- 클래스는 각 객체에 적용되는 데이터 구조와 연산을 포함
인스턴스
- 인스턴스는 클래스에 속하는 객체임
- 클래스의 모든 인스턴스는 동일한 속성과 메소드 집합을 가짐
생성자
- 클래스 이름과 동일한 이름을 가진 메소드로 인스턴스를 생성
소멸자
- 생성자의 반대로 생성된 객체 인스턴스를 메모리로부터 제거
- 객체가 제거되면 자동적으로 수행됨
클래스 변수
- static => 메모리에 미리 올라옴.. BSS 세그먼트
- 객체들 간 공유함
클래스 메소드
- static 선언
- C#이나 자바는 Main이 static으로 선언되어 있어야 함
- 메소드를 실행하려면 객체를 만들어야 하는데 맨 처음엔 그런게 없음
=> static으로 런타임 이전에 메모리에 올려야 함
Inheritance
- 상위 클래스의 속성 또는 행위를 하위 클래스가 상속하여 재사용하는 것을 의미
- super class, base class, parent class ..
- sub class, derived class, child class
Polymorphism (다형성)
- 함수 오버로딩
둘 이상의 객체들이 같은 메시지에 대해 각자 고유한 방식으로 응답 가능.. 매개변수 개수나 타입이 달라야 함
- 연산자 오버로딩
일반적인 연산자를 다른 유사한 용도로 사용할 수 있도록 재정의하는 것
오버라이딩 vs. 오버로딩
메소드 오버라이딩
- 상속받은 메소드에 대해 서브 클래스가 무시하고 재정의
- 메소드 이름과 매개 변수가 같으면서 구현이 다른 메소드가 클래스의 계층 상 여러개 존재 가능
- 한 클래스의 참조 변수가 계층 상의 여러 클래스 참조 가능
- 시스템이 실행 시간에 객체의 클래스를 판단해서 그 클래스에서 구현된 메소드 실행 (동적 바인딩)
메소드 오버로딩
- 한 클래스 내에서 이름이 같고 매개 변수의 수나 타입만 다른 메소드들이 여러개 구현되어 있을 수 있음
- 메소드를 호출하면 시스템은 인자의 수와 타입에 일치하는 메소드 구현을 선정하여 실행
추상 클래스(Abstract class)
- 가상 클래스 개념.. 여러 개의 클래스의 상위 클래스로 상속 계층을 만들어 구조화
- 하위 클래스의 인터페이스 역할
- 연산 중에 virtual(abstract) 함수를 포함해야 함
- 추상 클래스에서 상속받은 클래스를 concrete class라 함
추상 클래스와 추상 메소드
추상 클래스
- 아직 덜 구현된 클래스
- 추상 메소드를 갖는 클래스는 추상 클래스
- 추상 클래스를 상속받는 서브 클래스가 추상 메소드를 구현
- 객체 생성 불가
- 클래스 계층 구조에서 사용, 자식이 구현하지 않으면 자식 클래스도 추상 클래스
추상 메소드
- 메소드의 인터페이스만 정의되어 있는 메소드
- 메소드의 선언 시 abstract 키워드 사용
- 추상 메소드는 몸체를 가지지 않는다
Generic Class
- 클래스 안의 데이터의 타입을 미리 정하지 않고 객체를 생성할 때 그 타입을 선언하여 만들 수 있게 함
객체 지향의 장점
1. 생산성 향상
2. 자연스러운 모델링
3. 변화에 대비한 설계
4. 재사용 가능성
5. 유지보수 용이성
6. 더 안정적인 시스템
문제
성능
- 메시지와 해당 프로시저 간의 바인딩
- 가비지 컬렉션
- 작은 객체가 많은 시스템에서의 스왑 오버헤드
...
아직 공식적인 배경 부족!
'소프트웨어공학' 카테고리의 다른 글
유스케이스, 클래스 등등 다이어그램 기초 (0) | 2024.10.20 |
---|---|
UML 개요 (0) | 2024.10.20 |
OOP #2: Encapsulation, Information hiding (혹은 Abstraction), Message (0) | 2024.10.20 |
OOP #1 : 등장, 객체란? (0) | 2024.10.20 |
SW Myths, 등장 배경, (0) | 2024.10.20 |