안드로이드 개발을 할 때, 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 기본 개념을 이해하는 것은 매우 중요하다. OOP는 "객체"라는 개념을 이용하여 데이터를 관리하고, 그 데이터를 처리하는 메서드들을 함께 묶어서 사용하는 프로그래밍 패러다임이다. 이번에는 안드로이드 개발에 필요한 OOP의 핵심 개념들을 공부하려고 한다.
1. 클래스 (Class)
클래스는 객체를 생성하기 위한 청사진(설계도)이다. 클래스 내에는 데이터(필드)와 데이터를 처리하는 함수(메서드)가 정의된다. 이를 바탕으로 여러 객체를 생성할 수 있다.
class Car {
String color;
int speed;
void accelerate() {
speed += 10;
}
}
위의 예제에서 Car
클래스는 색상과 속도라는 데이터를 가지고 있으며, accelerate()
메서드를 통해 속도를 증가시키는 기능을 제공한다.
2. 객체 (Object)
객체는 클래스의 인스턴스(instance)로, 클래스에서 정의된 속성과 메서드를 실제로 사용할 수 있는 구체적인 실체이다. 클래스는 추상적인 개념이지만, 객체는 실제 메모리에 할당되어 동작한다.
Car myCar = new Car();
myCar.color = "Red";
myCar.accelerate();
이 예제에서는 myCar
라는 객체를 생성하고, 그 객체의 color
속성에 값을 할당하고, accelerate()
메서드를 호출하여 속도를 증가시켰다.
3. 상속 (Inheritance)
상속은 하나의 클래스가 다른 클래스의 속성과 메서드를 상속받아 사용하는 개념이다. 이를 통해 코드의 재사용성을 높이고, 공통된 기능을 상위 클래스에서 정의하여 하위 클래스에서 사용하거나 확장할 수 있다.
class ElectricCar extends Car {
int batteryLevel;
void charge() {
batteryLevel = 100;
}
}
ElectricCar
클래스는 Car
클래스를 상속받아 기존의 속성(color
, speed
)과 메서드(accelerate()
)를 그대로 사용하면서, 새로운 기능인 charge()
메서드를 추가로 정의할 수 있다.
4. 다형성 (Polymorphism)
다형성은 하나의 객체가 여러 형태를 가질 수 있는 능력을 말한다. 이는 상속을 이용해 구현되며, 상위 클래스 타입으로 여러 하위 클래스의 객체를 참조할 수 있다.
Car car1 = new ElectricCar();
Car car2 = new Car();
위 코드에서 car1
은 ElectricCar
객체이지만, Car
타입으로 참조할 수 있다. 이는 다형성의 대표적인 예로, 같은 부모 클래스 타입으로 다양한 자식 클래스 객체를 처리할 수 있게 한다.
5. 추상화 (Abstraction)
추상화는 불필요한 세부 사항을 숨기고 중요한 부분만을 보여주는 개념이다. 이를 통해 복잡성을 줄이고, 사용자에게 필요한 기능만을 제공할 수 있다. 안드로이드에서 인터페이스나 추상 클래스를 통해 구현할 수 있다.
abstract class Animal {
abstract void sound();
}
class Dog extends Animal {
void sound() {
System.out.println("Bark");
}
}
위 예제에서 Animal
클래스는 추상 클래스이며, sound()
라는 추상 메서드를 정의하고 있다. Dog
클래스는 sound()
메서드를 구체적으로 구현한다.
6. 캡슐화 (Encapsulation)
캡슐화는 데이터와 그 데이터를 처리하는 메서드를 하나로 묶고, 외부에서 접근을 제한하는 것이다. 이를 통해 데이터의 무결성을 유지하고, 객체 간의 상호작용을 안전하게 할 수 있다.
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
여기서 name
변수는 private
로 선언되어 외부에서 직접 접근할 수 없으며, getName()
과 setName()
메서드를 통해서만 접근이 가능하다. 이를 통해 외부에서 데이터의 직접적인 변경을 방지할 수 있다.
마무리
이상으로 안드로이드 개발에서 객체 지향 프로그래밍의 기본 개념을 정리했다. 클래스, 객체, 상속, 다형성, 추상화, 캡슐화는 OOP의 핵심 개념이며, 이를 잘 이해하면 더욱 효율적이고 유지보수가 쉬운 애플리케이션을 개발할 수 있다. 이 개념들을 잘 익히고, 안드로이드 개발에 적용해보자.
Kotlin OOP 적용해보기


'Android Development > Kotlin' 카테고리의 다른 글
안드로이드 개발을 위한 Kotlin 기초 (1) | 2024.09.23 |
---|---|
Kotlin 기본문법 (kotlin Basic syntax) (0) | 2024.09.19 |
Kotlin의 장점과 Multiplatform 공부하기 (2) | 2024.09.17 |
Enum 클래스 공부하기 (0) | 2024.09.16 |