Object-Oriented Programming

1. 자바의 탄생

Planted December 26, 2022

[스프링 입문을 위한 자바 객체 지향의 원리와 이해] chapter1을 바탕으로 쓰여졌다.


기계어에서 객체 지향 프로그래밍 언어로

1. 기계어

0과 1로 이뤄진 언어… 너무 비인간적이지 않는가

2. 어셈블리어

“기계어의 명령들을 일상 용어로 표현하고 이걸 기계가 알 수 있는 기계어로 번역하게 하면 어떨까?”

  • 그래, 기계어와 일상 용어를 일대일 매칭하는 코드표가 필요하다. 니모닉(Mnemonic)과 기계어의 일대일 매칭 코드표를 만들었고 이 표를 어셈블리(Aseembly)라고 불렀다.
  • 하지만, CPU마다 실해할 수 있는 기계어가 다르기 때문에, CPU 별로 어셈블리어( Assembly Language)가 달랐다. 또, 어셈블리어를 기계어로 번역해주는 소프트웨어를 어셈블러(Assembler)라고 불렀다. 애드삭 전용 어셈블러, 유니박 전용 어셈블러 이렇게 따로 있었던 것이다.

정리하자면, 어셈블러가 어셈블리어를 기계어로 번역하면 그 기계어를 가지고 기계를 실행시키는 것이다. (어셈블리어 → 어셈블러 → 기계어 → 실행)

3. C언어와 C++

어셈블리어 시대였을 때는, 기계마다 소스 파일을 따로 따로 만들어야 했는데, C언어가 등장하면서 소스 파일 단 하나만 만들면 된다 이름하여 싱글소스이다.

“One Source - Multi Object - Use Anywhere”

C언어

  • 싱글소스 : 하나의 소스 파일을 가지고 컴파일러를 통해 기종마다 하나씩 목적 파일(기계어)을 생성하기 때문에, 모든 컴퓨터에서 실행가능한 것이다.
  • 나아진 이식성 : 원래는 우리에게 쉬운 언어체계와 기계어 일대일 매칭이었다면, m대n(m:n) 매칭이 가능해졌다.
  • 구조적 프로그래밍 : 함수!

C++

  • C언어에 객체 지향 개념을 도입한다. 객체 지향의 등장!

4. Java

Write Once - Use Anywhere

  • C언어에서의 컴파일러가 단 하나의 소스로 여러 목적 파일(기계어)를 생성해냈었다면, 자바는 단 하나의 소스로 단 하나 목적파일을 생성한다. 기종마다 여러 컴파일러를 둘 필요가 없다. 이게 어떻게 가능할까?
    • 자바 컴파일러가 자바 소스파일을 가지고 자바 목적 파일(.obj)을 만들 것이다. 그러면, 그 단 하나의 목적 파일을 가지고 여러 기종의 컴퓨터에서 실행시킬 수 있다.
    • 이때, 각 기종에 맞는 JRE가 설치되어 있으면 될 뿐이다.


저자의 생각

UML, CBD, SOA

CBD SOA는 제품이 아니다. 누군가 본래 있었던 블록화 개발에 CBD를, 서비스 지향적 개발에 SOA라고 이름을 붙인 것이다.

객체지향 4대 특성

  • 자바, C#이 우리가 쓰는 제품이고, 이 안에 객제 지향 방법론에 대한 제조사의 생각이 담겨 있다. 그렇기에, 이 제품들에 녹아 있는 개체 지향 4대 특성을 제대로 이애해야 한다.
  • 스프링 프레임워크 또한 OOP를 제품화 한 것이며 객체 지향의 기반에 당당하게 있다.
    • 스프링의 끈이론(근원적 요소) :
      • IoC / DI
      • PSA(일관성 있는 추상화)을 통해 여러 기술을 표준화된 방식으로 사용하도록 지원해 안정적으로 개발할 수 있다.
      • AOP : Enterprise Applicatoin을 구현하는 데 필요한 서비스 중 하나

※ 끈이론 : 원소보다 더 낮은 단계로, 세상 모든 만물이 아주 작은 끈으로 구성돼 있다. 그 끈들이 진동하면서 모든 사물의 고유한 성질, 더 나아가 만물법칙까지 만들게 된다는 이론.

좀 더 깊게 이해하고 싶으면 어셈블리어 책을 읽어보자


👉 chapter 2