버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (139)
    • 🏃‍♀️ Do it ! (80)
      • TIL (73)
      • Project (5)
      • Certificate (2)
    • 📓 TechNote (52)
      • RPA (1)
      • Python (2)
      • JAVA (13)
      • Spring (11)
      • SQL (7)
      • Git & GitHub (6)
      • CS (0)
      • HTML & CSS & JavaScript (2)
      • Tools (9)
      • API (1)
    • 🔔 Error (7)
      • Error (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • sqld
  • 함수
  • SQL
  • 이클립스
  • 부트스트랩
  • 이것이자바다
  • opacity
  • 문제풀이
  • 게시판
  • 객체지향
  • 만들기
  • 큐
  • callback
  • 배열
  • final필드
  • 스택
  • 오라클
  • 기본쿼리
  • 데이터베이스
  • 홈페이지
  • dml
  • 세션
  • 코틀린
  • 안드로이드
  • 변수
  • 톰캣
  • foreach
  • 스프링
  • 포트폴리오
  • 버블소트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자
🏃‍♀️ Do it !/TIL

객체지향 프로그래밍

객체지향 프로그래밍
🏃‍♀️ Do it !/TIL

객체지향 프로그래밍

2022. 8. 9. 09:18
728x90

2022 / 8 / 9 화

 

  • 객체지향 프로그래밍

✔ 객체지향 프로그래밍

코끼리는 코가 길다 /성격이 온순하다 / 귀가 크다 와 같은 코끼리 특성과 같이 

구조화 프로그래밍과 비교했을 때 객체지향의 특성에는 추상화와 캡슐화가 있다. 

 

우리의 목표는 Real world에 있는 object를 computing의 object로 만드는 것.

Real world object = 환자 

computing object =

Data      -  1. 환자의 반드시 필요한 data

                 2. 객체 지향 설계에 부합되는 data

Function - 3. method

 

추상화 : 중요한 것은 무엇인가? 환자의 반드시 필요한 data / 객체 지향 설계에 부합되는 data

캡슐화 : 환자의 반드시 필요한 data / 객체 지향 설계에 부합되는 data / method

 

✨알아두면 좋은 용어 / 디지털트윈

더보기

디지털 트윈 (Digital twin)

현실세계의 기계나 장비, 사물 등을 컴퓨터 속 가상세계에 구현한 것

가상공간에 실물과 똑같은 물체(쌍둥이)를 만들어 다양한 모의시험(시뮬레이션)을 통해 검증해 보는 기술


추상화 : key 와 value 형식

        const product =
       {
            name : 'mouse',
            type : 'wired',
            getName : function()
           {
                 return product.name
           }
       };

        const ar = ['mouse', 'wired'];

자바스크립트에서 추상화를 한다는 것은

> 필요한 정보를 뽑아낼 때key와 value형식으로 뽑아낸다.

궁극적인 목표는 key를 이용하여 value에 접근하는 것! 

더보기
  1. 자동차를 만들때 중요한것은 무엇인가를 파악한다
  2. 타이어, 핸들, 엔진, 문, 유리 , 라이트, 거울, 시트 , 기아, 속도계 등등등,, 이 있어야한다. 
  3. 이를 잘 묶어서 object화를 해야한다. soled(객체 지향 설계)를 지키면서 ! 

 

 

⚙️ 추상화 문제를 풀어보자

더보기
        // 학생을 추상화하여 객체를 만드시오.
        // 학생은 성명, 학년, 반, 성별
        // 국어성적, 영어성적, 수학성적,
        // 성적평균, 성적총점 을 구하는 메소드가 필요하다 .
 
        const student = {
 
            name : 'happy',
            grade : 1,
            class : 3,
            gender : 'female',
            score : [80,70,60],
            // kor : 80,
            // eng : 70,
            // math : 60
 
            getresult : function()
            {
               
                let total = 0;
                for ( let val of this.score)
                {
                    total += val;
                }
                return total;
            },
            getAvg : function()
            {
                return this.getresult()/ this.score.length; // 웬만하면 this를 쓰는게 좋다.
            },
        };
 
        console.log(student.name);
        console.log(student.grade);
        console.log(student.class);
        console.log(student.gender);
 
        console.log(student.getresult());
        console.log(student.getAvg().toFixed(2));
 
        // => 화살표함수를 쓰면, 메소드 함수가 적용 안된다. =>를 쓴순간 this를 사용할수없음.
 
        // 10을 전역영역에 넣어보자.
 
        (function(){
            const b = 10;
            const a = new Number(10);
           
            console.log(typeof(a));
            console.log(typeof(b));
        })();
 
        // 기본 자료형을 객체형으로 변환해보자.
 
        (function(){
            const str = '안녕하세요';
            console.log(typeof(str));
 
            const len = str.length; // str은 때려죽어도 객체라는 뜻 / heap에다가 알아서 할당함.
            console.log(len);
            console.log(typeof(len));
       
        })();
 
        let a = [1,2,3]
        a.name = "happy"
        console.log(a.name);

 


✔️ 정리

JS data - type

  1. 기본 data - type(primitive data type) : global / stack 영역
  2. object data - type : heap 영역

object data 

heap영역에 배치되는 것은? 

  1. Array
  2. object ( 여기서 말하는 object는 object data와 다른 의미임)
  3. class

 

heap에 allocation 되는 방법에는 2가지가 있다.

  1. object literal
  2. new

위 두 가지를 써서 heap영역에 올라가면 object인가? YES!

 

기본 data영역에 해당되지 않는 것들은 기본적으로 object를 갖고 있다. 

 

object에는 아래와 같은게 들어갈 수 있음.

  1. 우리가 원하는 attribute ( key , value ) 
  2. 우리가 원하는 function ( method )
  3. prototype

 

'🏃‍♀️ Do it ! > TIL' 카테고리의 다른 글

scope / 문서객체모델  (0) 2022.08.11
객체지향 / prototype /JSON / font  (0) 2022.08.10
forEach / map / filter / Arrow / 즉시호출 / time  (0) 2022.08.08
함수의 메모리 적재 / 가변 파라미터 / 전개 연산자 / 디폴트 파라미터 / Callback / forEach  (0) 2022.08.05
메모리 모델 / 디버거 / 디버깅  (0) 2022.08.04
  • ✔ 객체지향 프로그래밍
  • ✔️ 정리
'🏃‍♀️ Do it !/TIL' 카테고리의 다른 글
  • scope / 문서객체모델
  • 객체지향 / prototype /JSON / font
  • forEach / map / filter / Arrow / 즉시호출 / time
  • 함수의 메모리 적재 / 가변 파라미터 / 전개 연산자 / 디폴트 파라미터 / Callback / forEach
버터감자
버터감자
🌱 새싹 개발자의 코딩 블로그 🌱

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.