클래스
기술노트
클래스 (Class)
클래스(Class)는 객체 지향 프로그래밍(OOP)에서 특정 종류의 객체를 생성하기 위한 설계도 또는 틀입니다. 클래스는 객체가 가져야 할 속성(데이터, 변수)과 행동(메서드, 함수)을 정의하며, 이를 통해 유사한 특성을 가진 여러 객체를 효율적으로 생성하고 관리할 수 있습니다.
🧱 클래스의 주요 역할 및 특징
- 객체 생성의 틀 : 클래스는 실제 객체(인스턴스)를 만들기 위한 청사진 역할을 합니다.
- 속성(Attribute) 정의 : 객체가 가질 수 있는 데이터나 상태를 정의합니다. (예: 이름, 나이, 색상 등)
- 행동(Method) 정의 : 객체가 수행할 수 있는 동작이나 기능을 정의합니다. (예: 걷다, 말하다, 계산하다 등)
- 캡슐화 지원 : 데이터와 데이터를 처리하는 메서드를 하나의 단위로 묶어 관리함으로써, 외부로부터의 직접적인 접근을 제한하고 데이터의 무결성을 보호합니다.
💡 클래스, 객체, 인스턴스의 관계
- 클래스 (Class) : 객체를 만들기 위한 설계도. (예: 자동차 설계도)
- 객체 (Object) : 클래스에 의해 정의된 속성과 행동을 가진 실체. 메모리에 할당되어 실제 사용될 수 있는 상태. (예: 설계도에 따라 만들어진 실제 자동차)
- 인스턴스 (Instance) : 특정 클래스의 객체를 나타내는 용어. 클래스로부터 생성된 객체를 '인스턴스'라고 부르며, 이 과정을 '인스턴스화(Instantiation)'라고 합니다. (예: '현대 아반떼'는 '자동차' 클래스의 인스턴스)
🤔 왜 클래스를 사용하는가? (OOP의 장점)
- 코드 재사용성 : 한 번 정의된 클래스를 통해 여러 객체를 생성할 수 있어 코드 중복을 줄이고 재사용성을 높입니다.
- 유지보수 용이 : 기능 변경 시 해당 클래스만 수정하면 되므로 유지보수 비용을 줄일 수 있습니다.
- 모듈화 : 코드를 논리적인 단위(클래스)로 분리하여 관리하기 쉽게 만듭니다.
- 확장성 : 기존 클래스를 상속받아 새로운 기능을 추가하거나 변경하여 시스템을 쉽게 확장할 수 있습니다.
💡 개발자 핵심 Point
- 클래스는 객체 지향 프로그래밍의 핵심 개념이며, 현대 소프트웨어 개발에서 매우 중요하게 사용됩니다.
- 클래스 설계 시 SOLID 원칙과 같은 객체 지향 설계 원칙을 고려하여 유연하고 확장 가능한 코드를 작성하는 것이 중요합니다.
- 클래스를 통해 생성된 객체들은 서로 독립적으로 존재하며, 각자의 상태를 가질 수 있습니다.