클래스와 객체지향 프로그래밍

안진혁·2023년 5월 11일
0

클래스

클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)과 행위(behavior)를 변수와 메서드로 정의한 것으로 객체를 만들기 위한 메타정보라고 볼 수 있습니다.

인스턴스(객체) : 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것으로 실제 프로그램에서 사용되는 데이터

  • 자바스크립트 언어는 프로토타입을 베이스로 하지만 ES6부터 클래스를 기반으로 객체지향 프로그래밍을 할 수 있음
  • 만들고자 하는 객체의 양식을 생성자 함수를 통해 정의해두고 함수를 호출하듯 필요한 데이터만 인자로 전달하게 되면 손쉽게 객체들을 만들 수 있음.
  • 객체를 만들때 공통적인 구조를 가진 객체가 있다면 생성자 함수를 이용해서 만들 수 있음.

객체지향 프로그래밍이란?

프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.

그러면 객체 지향 프로그래밍의 장점은 뭘까?

프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다.

컴퓨터 부품을 교체할 때, 해당하는 부품만 쉽게 교체하고 나머지 부분은 건드리지 않아도 되는 것 처럼 소프트웨어를 설계할 때 객체 지향적 원리를 잘 적용해 둔 프로그램은 각각의 부품들이 독립적인 역할을 가지기 때문에 코드 변경을 최소화하고 유지보수에 유리합니다.

객체 지향 프로그래밍의 특징 4가지

1. 추상화
객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것을 의미합니다.

2. 상속
상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미합니다.
즉, 클래스들 간 공유하는 속성과 기능들을 반복적으로 정의할 필요 없이 딱 한 번만 정의해두고 간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근하여 사용할 수 있도록 합니다.

3. 다형성
어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할수 있는 객체 지향의 특성을 의미합니다.

4. 캡슐화
캡슐화란 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말합니다.

class LeagueOfLegends {//리그오브레전드의 캐릭터들의 정보
    constructor(q, w, e) { //인스턴스를 만들어지고 실행되는 코드
        this.q = q //this키워드는 인스턴스 객체를 의미한다.
        this.w = w
        this.e = e
    }
    get activeSkill() { // 스킬의 대한 정보를 저장
        return`${this.q} ${this.w} ${this.e}`;
        //출력해서 보여줄 값을 반환
    }
}
const katarina = new LeagueOfLegends ('BOUNCING BLADE','PREPARATION','SHUNPO')
//katarina의 스킬 정보를 인스턴스로 전달
const garen = new LeagueOfLegends('DECISIVE STRIKE','COURAGE','JUDGMENT')
//garen의 스킬 정보를 인스턴스로 전달
console.log(katarina)
console.log(garen);
garen.activeSkill

쉽게 이해하기 위해서 좋아하는 게임정보를 담은 객체를 클래스를 사용하여 만들어 보았습니다.

하나의 공통된 주제인 LeagueOfLegends라는 게임을 class 함수를 사용하여 템플릿으로 만들고 생성자 함수로 만들어 캐릭터들의 정보를 쉽게 분류하여 가져올 수 있었습니다.

profile
기록

0개의 댓글