본문 바로가기

IT/개발상식

Class

안녕하세요. 반갑습니다. FoxMon입니다. 오늘은 좀 진지하게 글을 작성해볼까 합니다. 요즘 부쩍 개발상식 컨텐츠가 여러모로 인기가 많아서 이쪽으로 쭈욱 이어가볼까 합니다. 인기가 많아지니 기분이 꽤 좋군요.

오늘 다룰 내용은 Class 입니다. 아마 처음 프로그래밍을 접하시거나, 혹은 처음은 아니지만 프로그래밍에 능숙하지 않으신 분들은 클래스 라는 개념이 헷갈리고 어려우실 텐데요. 저도 돌이켜보면 학부 시절 Java 언어를 통해 처음 클래스라는 개념을 접했는데 이 때 꽤나 어려워 고생한 기억이 있습니다. 하지만 클래스라는 개념은 객체지향이라는 개념과 굉장히 밀접하기 때문에 알아야 할 필요성도 있을 뿐더러 다양한 언어에서도 클래스 기반 설계가 굉장히 많으니 열심히 극복해 나갈 필요성이 있습니다.

그럼 지금부터 천천히 함께 알아보는 시간을 가져보겠습니다.

 


 

객체

먼저 객체란 무엇인지 알아 볼까요? 소프트웨어에서 객체란 일상에서 보는 모든 것이 객체가 될 수 있습니다. 굉장히 교과서적인 설명이기도 하지만 이것보다 더욱 정확하게 표현할 수 없을 것 같아요. 더욱 쉽게 말하자면 제 눈 앞에 보이는 모니터, 노트북, 전동 면도기 등등,,, 모든 것이 객체라고 볼 수 있답니다.

하지만 저희는 개발을 하는 입장이므로 이러한 것들을 코드로 표현할 수 있어야 해요. 이러한 객체를 만들기 위한 틀을 보통 저희는 Class라고 부릅니다. 즉, 모니터 클래스, 노트북 클래스, 전동 면도기 클래스 등등 이와 같이 표현할 수 있겠네요.

또한 개발하는 관점에서 보자면 모니터, 노트북, 전동 면도기들이 가지고 있는 속성과 행위가 굉장히 중요합니다. 속성과 행위라 하면 꽤나 추상적일 수 있는데(물론 추상적인 것도 꽤나 중요하답니다.), 쉽게 풀어서 설명하자면 속성이란 각각의 사물들이 가지고 있는 특징을 의미합니다. 모니터같은 경우에는 모니터의 밝기가 속성이 될 수 있겠네요. 노트북은 키보드 자판이 될 수도 있겠구요. 전동 면도기는 칼날의 갯수가 될 수도 있겠네요. 행위에 대해서 이야기 하자면 노트북의 행위는 ON / OFF 정도가 될 수 있겠네요. 이어서 사물들의 행위들을 주로 클래스의 메소드(함수) 라고 합니다. 저희는 노트북을 키거나(ON), 끄는(OFF) 행위를 할 수 있는 것이지요.

이렇게 저희는 사물을 관찰하고 코드로 옮겨 표현할 뿐입니다. 예시로 함께 알아볼까요?

 


 

예제

class Monitor {
    constructor() {
        /**
         * 내가 켜져 있는가?
         */
        this.isOn = false;
    }

    changeOnOff() {
        /**
         * 켜져 있다면 끄고,
         * 꺼져 있다면 켠다.
         *                 this.isOn = !this.isOn; 과 같은 문법
         */
        if (this.isOn === true) {
            this.isOn = false;
        } else {
            this.isOn = true;
        }
    }
}

단순한 모니터를 표현한 것인데요. ON / OFF 에 대한 속성을 가지고 있구요. 이를 바꾸는 changeOnOff() 메소드를 가지고 있습니다. 이렇게 눈으로 관찰한 사물을 코드로 표현한 것 뿐이에요.

 


 

결론

물론 실제 상화에서는 이보다 더욱 복잡한 코드들이 많겠지만 우선 대략적으로 클래스란 무엇이고 어떻게 접근하면 좋을지에 대해 연습해 보는 것이 더욱 좋다고 생각이 됩니다. 처음부터 어려운 코드를 작성하는 것보다 차근차근 개념을 이해하면서 어떻게 접근하면 좋을지를 익히는 것이 중요하다고 생각하거든요.

위의 설명과 예시가 도움이 됐으면 좋겠네요 !

그럼 평소처럼 급하게 마무리 지을게요 !

'IT > 개발상식' 카테고리의 다른 글

프론트엔드, 백엔드  (0) 2024.03.26
의존성 주입  (0) 2024.02.25
추상화  (0) 2024.01.10
Clean Code  (0) 2023.12.02
Architecture  (0) 2023.10.25