Android Kotlin OOP and class

사용 언어: Kotlin 1.9.10

안드로이드 Kotlin OOP(Object-Oriented-Programming) and class를 알아보겠습니다.


출처:
https://developer.android.com/codelabs/basic-android-kotlin-compose-classes-and-objects#0


OOP는 4가지 주요 개념을 가지고 있습니다.

• Encapsulation (캡슐화)

• Abstraction (추상화)

• Inheritance (상속)

• Polymorphism (다형성)





하나하나 봅시다.


Encapsulation (캡슐화)

클래스 안에서 연관된 메서드와 속성들을 묶습니다. 예를 들면, 휴대폰이 있습니다. 휴대폰은 카메라, 화면, 메모리 카드, 여러 하드웨어와 소프트웨어로 캡슐화되어 있습니다. 당신은 어떻게 연결되어 있는지 걱정할 필요가 없습니다.



Abstraction (추상화)

캡슐화의 확장입니다. 중요한 것은 최대한 내부의 로직을 숨기는 것입니다. 예를 들면, 당신의 휴대폰으로 사진을 찍을 때, 카메라 앱을 엽니다. 그리고 찍고 싶은 곳으로 초점을 맞춥니다. 촬영 버튼을 눌러 사진을 촬영합니다. 당신은 카메라 앱이 어떻게 만들어졌는지, 어떻게 카메라 하드웨어가 작동하는지 알 필요가 없습니다. 요약하자면, 카메라 앱의 내부와 어떻게 촬영을 하는지 등이 추상화되어 있어 하고 싶은 작업을 당신이 할 수 있게 해줍니다.



Inheritance (상속)

부모 자식 관계를 맺어 부모 클래스의 행위를 할 수 있게 해줍니다. 예를 들면, Android OS를 쓰는 많은 휴대폰 제조 회사가 있습니다. 이러한 회사들의 제품 UI는 다릅니다. 다르게 표현하자면, Android OS를 상속받은 특징들을 제조사들이 각자 커스텀 하여 만듭니다.



Polymorphism (다형성)

그리스의 poly-라는 어원에서 비롯됩니다. 해당 언어는 많음을 의미합니다. -morphism은 형태를 의미합니다. 다형성은 다양한 Object(객체)들을 하나의 보편적인 방법으로 사용할 수 있습니다. 예를 들면, 블루투스 스피커를 휴대폰과 연결합니다. 휴대폰은 블루투스 스피커가 블루투스를 통해 소리를 낼 수 있다는 사실만 알면 됩니다. 하지만, 세상에는 많은 종류의 블루투스 스피커가 있습니다. 이러한 모든 스피커에 연결할 때, 따로 특별한 연결 방법을 휴대폰이 알 필요는 없습니다.





간단한 class(클래스) 생성은 아래 SmartDevice()처럼 만듭니다.

이러한 class를 사용하기 위해서는 아래처럼 instance(인스턴스)로 만들어야 합니다.

val smartDevice = SmartDevice()

val이기 때문에 smartDevice 변수 자체는 변경이 불가하지만, 할당된 Class 내부는 변경이 가능합니다.





class 내부에는 properties(속성)와 method(메서드)를 정의할 수 있습니다.


먼저 method를 봅시다.

class 내부의 함수를 member function(멤버 함수) 또는 method(메서드)라고 부릅니다.


정의하는 방법은 똑같고 단지 class 안에 있다는 차이입니다.

부르는 방법은 생성한 인스턴스.함수이름()을 적어주면 됩니다.









properties를 봅시다.

변수 설정도 동일합니다. 다만, class 안에 있다는 차이입니다.

그리고 get(), set(value)도 설정할 수 있습니다.







method처럼 동일하게 poperties를 사용할 수 있습니다.

get과 set에 사용되는 field는 backing field를 의미하며 값을 메모리에 들고 있습니다.

set에서 바로 value를 넣게 되면, set()이 무한으로 불러와집니다.






val은 get()만 가능하고

var은 get(), set(value)가 가능합니다.


위의 devicePower의 경우 get과 set이 변경되지 않은 기본 상태입니다.

이경우 이렇게 줄일 수 있습니다.







다음으로 볼 항목은 Constructor(생성자)입니다.

constructor는 object가 초기화될 때 필요합니다. constructor는 parameter(매개 변수)가 있을 수 있고 없을 수도 있습니다.


기본 constructor는 이렇게 생겼습니다.





parameter가 없을 때에는 생략할 수 있습니다.




parameter가 있는 constructor를 만들 때에는 이렇게 합니다.






또는 아래처럼 간략하게 표현 가능합니다.







두 개 이상 constructor가 필요할 때에는 아래와 같이 합니다.









끝.



카테고리: Android




댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)