🧩클래스와 🏠객체는 각각 무엇인가요?

     

    키워드

    🏠클래스와 🧩객체란?

    🧩,🏠,🛕인 이유는 무엇일까?

    🏠 클래스란? 

    그럼 어떻게🏠클래스를 만들까요?

    🏠클래스의 구조란?

    그럼 🧩객체는 무엇일까요?

    🛕객체 지향 프로그래밍은 뭐라고 생각하세요?

     

     


     

     

    🏠클래스와 🧩객체란?

     

    레고로 도시🛕를 만들어본 적 있으신가요? 도시를 만들기 위해서는 작은 부품🧩들을 모아서 이러한 형태의 하나의 🏠건축물(프로그램)을 만들어요. 그것들을 🏠🚇🛬🏭 모아 모아 만든다면 바로 이렇게 하나의 🛕도시를 만들 수 있게 됩니다. 

     

    여기서 🛕는 객체 지향 프로그래밍을 🧩은 객체를 🏠은 클래스에 대한 비유인데요,

     

     

    사전적인 의미로 얘기하자면,

    객체 - 속성(=데이터,값)과 메소드(=행위)로 구성된다.
    - 데이터 : 객체가 가지고 있는 정보 (=명사)
    - 메소드 : 객체가 메시지를 받아 실행해야 할 구체적인 연산을 정의한다 (=동사)
    클래스 - 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것이다.
    (= 클래스는 유사한 기능을 하는 객체들의 집단)
    메시지 - 객체들 간의 상호작용을 위한 수단으로 사용되며, 메시지를 받은 객체는 메소드를 수행한다.

     

    즉 🛕객체 지향 프로그래밍을 하기 위한 아주 중요하면서 기본적인 개념이 바로 🏠 클래스라는 의미입니다.

     

     

    여기서 🏠 클래스란? 

     

    객체를 만들기 위한 설계도입니다. 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용되곤 해요. 

     

    다시 레고의 예로 돌아와서 레고를 만들 때 공통적인 🧩틀로 부품들을 만들어야 같은 모양의 🏠이 나오는 것처럼 클래스도 이와 같습니다. 또 다른 예시는 "자기소개서"인데요, 자기소개서 양식이 따로 없다면 지원자들이 정말 "자유롭게" 지원할 것이고, 나중에는 원하는 정보를 찾기 어려울 수 있어요. 그래서 자기소개서라는 공통 양식에 지원자들이 각기 다른 내용을 채우는 개념 = 클래스다. 정도로 이해하면 좋을 것 같습니다.

     

     

    그럼 어떻게 클래스를 만들까요?

     

    클래스라는 틀을 만들기 위해서는 추상화캡슐화가 필수입니다. 왜냐면, 저희는 레고의 조각을 만들 설계도만 필요하지, 다른 조각을 만들 설계도는 필요하지 않기 때문입니다. 굳이 불필요한 객체는 만들 필요가 없으니까요!

    클래스를 만들기 위해서는 추상화캡슐화 과정이 필요하다! 

     

    추상화

    더보기

    유연성을 확보하기 위해 구체적인 것은 제거한다는 의미

    작성하려는 클래스의 속성과 기능 중 프로그램에서 필요한 공통점을 추출하고, 불필요한 공통점을 제거하는 과정

     

    캡슐화

    더보기

    추상화를 통해 정리된 데이터들과 기능을 하나로 묶어 관리하는 기법

    클래스의 가장 중요한 목적인 데이터의 접근제한을 원칙으로 하여 클래스 외부에서 데이터의 직접 접근을 막고, 대신 데이터를 처리하는 함수들을 클래스 내부에 작성하는 방법

     

     

     

     

     

    🏠클래스의 구조크게 2가지로 나뉩니다.

     

    바로 필드와 메소드인데요.

    필드는 해당 클래스의 상태, 정보를 나타내는 영역! 

    메소드기능 또는 동작을 나타내는 영역!이라고 할 수 있습니다.

     

    😏 '필드는 명사or형용사 메소드는 동사 같은 느낌!'

     

     

     

    🏠그럼 객체는 무엇일까요?

     

    사전적인 의미로 현실세계에 독립적으로 존재하는 (=목적이 있고, 의미가 있는) 것들을 의미한다라고 하는데,

    이 개념이 너무 추상적이었어요 😒 .. 그래서 저는 레고 🏠에 빗대어서 생각했어요.

    예를들어 하나의 도시를 만들기 위해서는 🏠집, 🚇지하철, 🛬공항, 🏭공장 등  서로 다른 공간을 각기 다른 역할을 나눌 수 있는 것객체라고 생각합니다. 그것들을 모아 만든 것이 객체 지향 프로그램이고요!

     

     

    객체 지향 프로그래밍은 뭐라고 생각하세요?

    더보기

    객체 지향 프로그래밍은 "원하는 것을 프로그램을 통해 '인터넷'에서 구현한다" 정도로 이해하면 좋을 것 같아요. 

    현실세계의 어떤 독립적인 존재들 간의 상호작용, 프로그래밍을 통해 가상세계를 구현하는 과정이라고 할 수 있습니다. 처음에는 이 개념이 너무 추상적이라서 어렵게 느껴졌는데, 오프라인에서 쇼핑을 할 수 있듯, 온라인에서도 쇼핑을 할 수 있도록 만드는 것. 이것이 바로 객체 지향 프로그래밍이다라고 말할 수 있을 것 같아요.

     

     

     

     


     

    참고 블로그

     

     

    728x90

    '📓 Study > Tech Interview' 카테고리의 다른 글

    Java 8에서 추가된 기능에 대해 설명해주세요.  (0) 2021.10.22
    인덱스란?  (0) 2021.09.26
    IPC(Inter Process Communication)란?  (0) 2021.09.23
    이상(Anomaly)이란?  (0) 2021.09.22
    KEY란 무엇인가요?  (0) 2021.09.21

    댓글