1. "데이터"를 이해해야 하는 이유

더보기

1. 용어

 

기술을 배울때 가장 먼저 해야 하는 것은

기술 용어의 단어 하나하나의 의미를

영어사전, 한자사전에서사전적 정의와 의미를 살펴보아야합니다.

 

DataBinding(데이터 바인딩)은,

용어 그대로 Data를 Binding하는 기술입니다.

 

그렇기에, 프로그래밍에서 Data 라는 것을 이해하고 있다면, DataBinding은 어렵지 않은 기술입니다.

반대로, 프로그래밍에서의 Data를 설명할 수 없다면, Data Binding도 이해하지 못합니다.

 

 

2. 목표

 

1)프로그래밍과, 2)추상화, 3)데이터에 대해 이해합니다.

데이터와 4)자료형, 5)프로퍼티, 6)모델로 지칭되는 용어와 관계를 이해합니다.

 

2. "추상화"를 이해해야 하는 이유

더보기

1. 용어

 

WPF, IOS, Android 등 UI를 다루는 프레임워크에서 사용되는 프로그래밍 아키텍처 패턴인 MVVM은,

DataBinding(데이터 바인딩)이 핵심입니다.

 

그리고 DataBinding이 사용되는 이유는,

프로젝트 구조가 MVVM(Model-View-ViewModel) 패턴으로 추상화된 구조를 구현하기 위해서입니다. 

 

 

2. OOP >> SOLID >> 추상화 >> MVVM >> DataBinding

 

OOP는 SOLID 원칙을 지켜야 합니다.

SOLID 원칙을 지키기 위해, 구현 구조를 추상화 합니다.

추상화 구조를 구현하기 위해, MVVM 패턴을 사용합니다.

MVVM 패턴을 구현하기 위해, DataBinding 기술을 사용합니다.

DataBinding 기술을 이해하기 위해, Data 와 추상화를 이해합니다.

 

 

3. 목표

 

1)현실의 대상을 소스코드로 구현하는 관점에서 추상화 이해

2)OOP 객체의 구현 구조에서 종속성 관점에서 추상화 이해 

 

3. 프로그래밍과 추상화

더보기

1. 프로그래밍이란?

 

프로그래밍은, 개발자가 의도를 소스코드를 사용해,  프로그램으로 구현하는 작업입니다.

 

 

 

 

2. 현실에서 "추상"

 

프로그래밍의 추상화 개념에 앞서, 

현실에서 "추상"이라는 단어가 사용된 예시들을 살펴보면서 "추상화"의 용어를 이해해 봅니다.

 

1)

"네 말은 너무 추상적이야"

위 문장의 반대말은, "구체적"입니다.

 

2)

미술에서 추상화 기법은,

현실 세계의 형태, 색, 선, 질감을 >> 변형하거나 단순화하여 감정, 개념, 또는 본질을 표현하는 방식입니다.

반대 의미는, 구체적인 형상을 "사실적"으로 그려내는 것입니다.

 

3)

현실에서 멀리서 다가오는 친구의 형태를 상상해 봅시다.

여러 사람 중 친구를 구분할 수 있다면, 그 기준은 친구만이 가진 "특징, 특성"이 기준일 것입니다.

 

4)

눈을 최대한 감고, 희미하게 뜬 상태에서 옆사람을 바라봅시다.

옆사람을 다른 사람과 구분할 수 있나요?

그렇다면 그 이유는 무엇인가요?

 

 

 

 

3. 추상 사전적 정의

 

추상(抽 뽑을 추 象 코끼리 상)

>> 여러 가지 사물(事物)이나 개념(槪念)에서 공통(共通)되는 특성(特性)이나 속성(屬性) 따를 추출(抽出)하여 파악(把握)하는 작용(作用).

 

 

 

 

4. 프로그래밍에서 "추상화" 

 

개발자는, 원한다면 세상의 모든 것을 소스코드로 구현해 프로그램을 만들 수 있어야 합니다.

이 때, 프로그램 구현에 필요한 특성 선택하고 소스코드로 구현하는 과정을 추상화라고 합니다.

 

개발자는, 구현 대상의 모든 구체적이고 사실적인 속성들과 값을  소스코드로 구현할 필요도 이유도 없습니다.

프로그램 실행에 필요한 것들만 소스코드로 구현하면 됩니다.

 

 

 

 

5. MVVM "추상화" 관련 개념

 

대상의 자료, 정보, 값을 추상화 할 >> 속성(Property), 값(Data)

대상의 행위(Behavior), 동작(Command)을 추상화한 >> 로직(Logic)

구현된 소스코드 객체(Object)의 공통된 특성이 추출된 >> 일반화(Generalization)

구현된 소스코드 객체(Object)의 기능(관심사-Concern)이 추상화(추출)되어 패턴화된 >> MVVM

 

1)DataBinding에서는 Data에 초점의 맞춰 속성(Property)의 추상화를 중심으로 이해해야 합니다.

2)MVVM 구조 패턴에서는 소스코드로 구현된 객체(Object)를 어떻게 분리해서 사용하는지 이해해야 합니다.

 

4. 프로그래밍과 추상화 예시

더보기

1. 프로그래밍에서 "추상화" : 데이터 편

 

'사람' 이라는 현실의 객체가 가지는 구체적인 속성 데이터의 가짓수는 무한합니다.

이름, 나이, 키, 몸무게, 생년월일, 출생일, 발 크기, 손가락 반지 사이즈, 상의 사이즈 등...

이 모든 데이터를 프로그램화할 이유는 없습니다.

 

현재 내 프로그램에 필요한 데이터는, '이름'과 '나이'입니다.

 

'사람'을 소스코드에서 Person 객체로 추상화한다면, 

Person 객체는 'Name'과 'Age'라는 2가지 속성(특성)을 가진 "사용자 정의 자료형"으로 구현됩니다.

 

public class Person
{
    // Name 속성 (이름)
    public string Name { get; set; }

    // Age 속성 (나이)
    public int Age { get; set; }
}

 

 

 


2.프로그래밍에서 "추상화" : 로직 편

public class Person
{
    // Name 속성 (이름)
    public string Name { get; set; }

    // Age 속성 (나이)
    public int Age { get; set; }

    // 생성자: Name과 Age 값을 초기화
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    // Person 정보를 출력하는 메서드
    public void PrintInfo()
    {
        Console.WriteLine($"Name: {Name}, Age: {Age}");
    }
}

 

 

 

 

3. 프로그래밍에서 "추상화" : 객체 편

 

MVVM 에서 확인

 

4. 프로그래밍에서 "추상화" : 관심사(Concern) 분리 

 

MVVM 에서 확인