일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- getItem
- Quaternion
- PYTHON
- euler
- addEventListener
- jQuery
- Lerp
- 종속변수
- 도린이
- setItem
- topdown
- 탑다운
- intervals
- 도트
- 독립변수
- vsCode
- 코딩
- 2D
- Event
- javascript
- 픽셀
- 자주 사용하는 Quaternion 함수
- 웹스크래핑
- 회전
- className
- classList
- 연습
- click
- Unity
- wsl
- Today
- Total
쫑가 과정
객체 지향 프로그래밍의 원리 본문
객체 지향 프로그램 object-oriented programming
서로 관련된 Methods와 Variables 이 함께 그룹화되어 Object를 형성하는 프로그래밍 패턴.
OOP라고 부른다.
4가지 주요 원칙
추상화, 캡슐화, 다형성, 상속
추상화 Abstraction
다른 프로그래머가 볼 수 있는 스크립트에서 복잡한 코드를 제거하고 다른 프로그래머가 실제로 필요로 하는 기능만 노출하는 프로세스.
목표는 코드를 가능한 한 깨끗하게 유지하고 다른 프로그래머(또는 자신!)가 사용할 수 있도록 단순하게 유지
Rabbit 예제에서 Hop 메서드는 추상화의 좋은 예
캡슐화 Encapsulation
목적이 프로그래머를 코드 복잡성에서 분리하는 것이라는 점에서 추상화와 유사하지만 여기서는 접근성 형태의 코드 안전성에 더 중점을 둔다.
캡슐화된 코드에서 다른 프로그래머는 변수 값이나 개체 속성을 쉽게 변경할 수 없게 해서
다른 프로그래머를 위한 코딩 도구를 제공하고 그들이 의도한 대로 변수와 메서드만 사용하도록 한다.
다른 스크립트가 코드에 액세스 할 수 있는 다양한 방법을 모두 설명하는 것은 불가능하므로 의도한 대로만 수행할 수 있도록 만든 것을 캡슐화하는 것이 훨씬 좋다.
예를 들어 토끼의 귀 유형이 청각 능력에 영향을 미친다고 가정. 그렇다면 해당 값을 설정하면 나중에 변경하면 안 된다. 값을 보호하려면 값을 비공개로 설정하여 외부 스크립트가 값에 액세스하지 못하도록 해야 한다.
상속 Inheritance
자식 클래스(child classes)라고 하는 다른 클래스를 만들 수 있는 기본 클래스를 만드는 프로세스
자식 클래스(child classe)는 기본 또는 부모 클래스(parent classe)의 모든 기능을 자동으로 가져온다.
두 클래스에서 모두 사용해야 하는 코드를 다시 작성할 필요가 줄어듦
예를 들어 Bunny라는 새 클래스를 만들고 싶다고 가정.
상속이 없으면 기본적으로 이미 작성한 모든 코드를 복사하여 새 클래스에 붙여 넣어야 한다.
상속을 사용하면 Rabbit 클래스를 확장하기만 하면 해당 기능이 이미 존재하고 Bunny 클래스에서 액세스 할 수 있다.
다형성 Polymorphism
상속을 사용할 때 가장 유용한 측면 중 하나
부모 클래스(parent class)에서 상속된 코드에 대한 대체 기능을 만들 수 있다.
예를 들어 자식 클래스(child class)인 Bunny 클래스는 길들여진 토끼를 나타낼 거다.
토끼처럼 도약할 수 있지만 토끼는 야생 부모(parent class)보다 약간 더 느려야 한다면,
다형성을 사용해 Hop 메서드의 내용을 재정의하고 Bunny에 고유한 사용자 지정 코드를 작성할 수 있습니다.
메서드 호출은 동일하게 유지되지만 호출된 엔터티에 따라 올바른 코드가 호출된다.
이후에 하나씩 자세하게 알아보자.
'Unity > 이론' 카테고리의 다른 글
(Euler) 각을 (Quaternion) 값으로 바꾸기 / Quaternion.Euler (0) | 2022.01.13 |
---|---|
두 회전 사이의 각 구하기 / Quaternion.Angle (0) | 2022.01.12 |
타겟 방향 바라보기 함수 / Quaternion.LookRotation (0) | 2022.01.12 |
벡터 연산 이해하기 (0) | 2022.01.07 |
유니티3D 회전 이해 (0) | 2022.01.06 |
객체 지향 프로그래밍의 캡슐화 (0) | 2021.12.28 |
객체 지향 프로그래밍의 상속과 다형성 (0) | 2021.12.28 |
객체 지향 프로그래밍의 추상화 (0) | 2021.12.27 |