[TIL] ORM과 객체,Class,instance에 대해 11/9 8일차

2022. 11. 13. 13:27스파르타코딩(22.8.29~22.12.31)/TIL(Today I Learned)

- Today I Learned

- 모델링을 하려고하니 모델에 대하여 이해도가 필요했고

  모델을 알아보니 ORM에 대한 이해도가 없어 다시 복습하며

  자세하게 알아보고자 한다.

 

  장고는 ORM 방식이라고 한다. 

 

  ORM(Object Relational Mapping(객체-관계-매핑)) 객체와 데이터베이스의 관계를 매핑해주는 도구

  이게 무슨말이지 객체와 데이터베이스의 관계를 매핑한다..

 

  하나씩 알아보자

 

 제임스 고슬링이 작성한 자바 언어 설명서 (The java Language Specification)에는

 

 1.객체의 의미

    객체(object)란 클래스의 인스턴스나 배열을 말한다고 정의되어 있다.

    객체(Object)의 사전적인 뜻은 '실체로 존재하는 대상 또는 개념'

 

 2.객체의 종류

   컴퓨터 공학에서 객체는 변수, 자료 구조, 함수, 메서드, 식별자에 의해 참조된 메모리 상의 값 등을 의미한다.

 

 3.객체지향 프로그래밍에서 객체란?

   객체는 변수, 함수, 자료 구조의 조합이 될 수 있는데,

   클래스를 기반으로 한 변수클래스의 인스턴스라고 지칭합니다.

 

4.객체 지향 프로그래밍(Object Oriented Programming) = OOP 이란?

  객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로,

  프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고

  객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법

 

 객체 지향 프로그래밍의 특징 더보기 ↓

더보기

1.캡슐화 (Encapsulation)

데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법입니다.

*코드의 재활용,은닉

https://radait.tistory.com/4

2.상속(Inheritance)

상위 클래스의 모든걸 하위 클래스가 모두 이어 받는것 입니다.

즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려줍니다.

https://radait.tistory.com/4

 

 

3.다형성(Polymorphism)

상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것을 말합니다.
쉽게 말하면 한부모의 밑에서 태어난 자식(쌍둥이포함)이 똑같지는 않는것과 같은 것과 같다할 수 있습니다.

참고* Overriding : 부모 클래스의 기능을 재정의 하는 것

 

장고에서의 오버로딩,오버라이딩 Overloading,Overriding

*Overloading : 클래스 같은 이름의 메소드 복수로 탑재하는 것

 Overloading는 상속과는 관계 없이 동일 Class 내에 동일한 Method 이름으로

 parameter(변수) 등을 추가하여 사용하는 것이다.

 오버로딩 :과적하다 , 이름은같지만 형태및 내용이 다른 메소드가 존재할수있다.

=> 어떤메소드의 기능을 추가과적 하는것

 

*Overriding : 부모 클래스 기능을 재정의 하는 것*

상속받은 부모클래스(Parent Class) 에 있는 Method는 실행이 안되고

상속자의 Class에 있는 method 가 실행되는 것.

https://radait.tistory.com/4

3.추상화(abstraction) 객체의

객체 공통적인 속성과 기능을 추출하여 정의하는것을 말합니다.
다시 말하면 실제로 존재하는 객체들을 프로그램으로 만들기 위한

공통적인 특성을 파악해서 필요없는 특성을 제거하는 과정을 가르킵니다.

https://radait.tistory.com/4

- 객체 지향 프로그래밍의 장단점

1. 재사용성
상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음.

 

2. 생산성 향상
잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음.

 

3. 자연적인 모델링
우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에

생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.

 

4. 유지보수의 우수성
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변

영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라 할 수 있다.

 

객제지향언어
자바,시뮬라67,스몰토크,오브젝티브-C,비쥬얼 베이직 닷넷,C++,C#,,엠바카데로 델파이
파이썬,펄,루비,액션스크립트,액티브 서버 페이지, 스위프트

 

※ 객체지향언어가 인기를 얻은 이후에 기존의 프로그래밍 언어들이

    객체지향의 요소를 추가하거나 확장하는 형태가 만들어지게 된다.

 

 

출처 : https://radait.tistory.com/4


 

 

 

객체,클래스,인스턴스의 예시 / https://upcake.tistory.com/418

프로그래밍에서의 각각의 의미는

1. 객체 : 소프트웨어 세계에 구현할 대상이며 속성과 기능을 가지는 프로그램 단위를 뜻합니다.

2. 클래스 : 객체에 속성과 기능을 넣어줄 설계도를 뜻합니다.

3. 인스턴스 : 클래스에 따라 메모리상에 구현된 실체를 뜻합니다.

4. 변수 : 하나의 값을 저장할 수 있는 저장공간

https://colossus-java-practice.tistory.com/1

 

------------------------------------ 실제 모델을 보며 확인 해보자 ------------------------------------

모델을 참조한 설명

데이터 테이블 : 행(row)열(colum)으로 이루어진 데이터의 집합.

 

Row(행) : 가로(열)묶은 데이터셋을 의미

Column(열) : 세로(열)묶은 데이터셋을 의미

 

출처 : https://velog.io/@yejin20/DB-DB-%EC%9A%A9%EC%96%B4-%EC%A0%95%EB%A6%AC

-> Field는 파일 시스템 상에서 표현되는 용어이며,

    Column은 관계형 데이터베이스에서 표현되는 용어로 개념은 비슷하지만 사용하는 상황이 다르다.

ColumnField의 차이

필드 Fields : 엑셀에서 열 column에 해당하는 가장 작은 단위의 데이터를 의미

레코드 Records : 논리적으로 연관된 필드의 집합을 의미

 

  모델을 토대로 종합하자면 이렇게 되는것 같다.

 

  데이터 베이스와의 관계를 맵핑 한다고 했는데 데이터베이스란 뭘까

 

 

데이터베이스 정의

 

 

  - ORM(Object Relational Mapping(객체-관계-매핑)) 객체와

                                                                                                         데이터베이스관계를 매핑해주는 도구

 

  모델에서 각 객체 title / content / created_at / updated_at 각각의 객체라고 부르고

  데이터베이스란 일련의 테이블을 효율적으로 행과 열로 모델링을 하여 조직화된 모음으로

  *매핑이란 연관성을 관계하여 연결시켜주는 의미를 지녔으며, 해당 값이 다른 값을 가리키도록 하는 것이다

   관계를 형성해주는 것이라고 이해하면 될것같다.

 

 

 

 

정리해보면

 

 

  각각의 객체 특정 테이블에 행과열에 맞추어 관계를 정리 해주는 도구가 ORM이다.

  각각의 객체와               데이터베이스의             매핑해주는              도구가 ORM이다.

 

 

ORM은 객체를 바탕으로 데이터베이스의 어떤내용을 저장,조회,수정,삭제 등의 행위로서 객체를 관리한다.

 

 

 

 

 

 

 

 

 

 


- kmc 튜터님 강의(일부내용)

  FLASK는 SQL 데이터베이스와 상호작용 하는 방법의 문법을 따로 알아야한다.
  원래는 DB를 상호작용 하려면 조회,수정,삭제를 하려면 SQL 프로그램 언어를 알아야했었다.
  장고는 파이썬의 Class와 기본문법만 안다면 DB와 상호작용 할 수 있도록 만들어 놓았다.
  그것이 ORM(들 중의 장고)이다.
  장고에서 DB를 관리하기 위해서 가장 중요한 파이썬 개념은 Class이다. 결국 DB관리는 객체관리와 같다.
  예를들면 대학교 학과 커뮤니티 사이트를 만들었다.
  저장 학생이름 학번 교수님이름 이런식으로 저장해야겠다.
  그과정에서 모든학생들 학번 교수님들을 Class,객체,method로 관리할수있다.
  그러므로 db관리는 곧 객체 관리이다.
  모든웹서비스에는 DB가 존재하고 DB는 웹서비스의 심장 DB가 많을수록 활용을 많이 할 수 있고
  설계방식의 따라 성능또한 달라진다.
  장고에서의 DB관리는 곧 파이썬의 객체관리이다. 

 

 장고의 ORM / 플라스크의 SQL 비교

https://developer-ankiwoong.tistory.com/1015

 

 

 

 

참조 : 변수란?

참조 : [Java] 도대체 객체가 뭔데? : 객체, 클래스, 인스턴스

참조 : 객체지향언어란? [특징, 장점, 단점, 종류]

참조 : 객체지향 프로그래밍이란? OOP

참조 : 데이터베이스란?

참조 : 객체와 인스턴스의 차이

참조 : Django와 Flask의 차이점.

참조 : Overriding vs Overloading

참조 : DB 용어 정리

반응형