🏫 Open API_JAVA

[15일차] 객체지향 이론 / 객체형 / Object literal / JS 데이터타입

Dorothy_YANG 2022. 8. 10. 18:22
728x90

20220809(화)

  • 목차
    - 객체지향 이론
    - 객체형
    - Object literal
    - JS 데이터 타입

< 객체지향 이론 >

 

[과거] 게임 코딩하기

공격 함수/걷는 함수/뛰는 함수/방어 함수/용사 별 공격 함수/몬스터 별 공격 함수/등등 엄청나게 많이 필요함 미친 짓을 했다...!

                              ↓

[현재] 지극히 인간적이게 변한 게임 코딩

칼{공격력/빛남/모양 등} / 용사{공격/걷기/뛰기/방어 등} ➡ 용사{칼/방패/ 등등} 합치자! 

 

* 정보공학 구조적 기법 : 패러다임 자체를 바꾸지 않는 한, 게임 코드 같은 것을 실세계에 적용하려면 답이 없다..!

우리가 실제 세계와 컴퓨팅 월드를 일치시킨 것이다. 일치시킨 것이 분리시킨 것보다 훨씬 더 낫다.

  • C++탄생
    C언어의 기능을 갖다 쓰되, 기능을 합치는 기능을 만들어서 합친 것(DATA + FUNCTION)
객체지향의 특성
추상화 캡슐화
중요한 것이 무엇인가를 판단해서  뽑아낸 것을 잘 묶는 것
= 어떻게 만들것인가
(1) 반드시 필요한 데이터와
(2) 객체지향 설계에 부합하는 데이터를 뽑아내는 것
(1) 반드시 필요한 데이터와
(2) 객체지향 설계에 부합하는 데이터
(3) method : function 

 

 

객체지향 프로그래밍과 그 특징(추상화, 캡슐화, 상속성, 다형성) / 파이썬 예시

객체(Object)? 객체지향 프로그래밍(OOP)? '객체(Object)' 하면 무엇이 떠오르시나요 어떤 분들은 일반적인 사물을 뜻하는 단어를 떠올릴 수도 있고, 어떤 분들은 예술용어인 오브제를 떠올릴 수도 있

fierycoding.tistory.com


< 추상화 >

  • 뽑아낼 때 key-value 형식으로 뽑아내는 것
    <script>
        const product = {
            name : 'mouse',
            type : 'wired',
            getName : function(){return product.name}
        };

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

    </script>

key : 보라색 / value : 빨간색 / Method : 노란색

 

 

JavaScript 객체

자바스크립트의 모든 것이 다 객체다

velog.io

 

[연습문제] 

더보기
// [추상화 연습문제]
// 학생을 추상화하여 객체를 만드세요.
// 학생은 성명, 학년, 반, 성별
// 국어성적, 영어성적, 수학성적
// 성적평균, 성적총점을 구하는 method가 필요

        const student = {
            name : 'Dorothy',
            grade : 2,
            class : 6,
            gender : 'female',
            score : [80, 90, 90], // 성적을 배열로 나타내기

// 성적평균, 성적총점 구하는 method
            getTotal : function()
            {
                let total = 0;
                for (let val of this.score)
                {
                    total += val;
                }
                return total;
            },

            getAvg : function()
            {
                return this.getTotal() / this.score.length;
            }

           
        };
   
        console.log(student.name);      
        console.log(student.grade);  
        console.log(student.class);  
        console.log(student.gender);

        console.log(student.getTotal());  
        console.log(student.getAvg().toFixed(2));

 


< 객체형 - Object type>

  • JavaScript의 거의 모든 객체는 Object의 파생 인스턴스
    - Object는 {}로 생성.
    - key-value 형식으로 데이터 유지. (key : value)

  • 객체형의 선언 및 연산
    객체 내부에는 Primitive type뿐만 아니라 객체형도 들어갈 수 있다

  • 전역 영역에 올라간다는 것
    이 웹 브라우저가 종료될 때까지 존재해야 한다.

< Object literal >

  • Javascript에서는 객체를 만드는 여러 가지 방법이 존재
    const obj = {};와 같은 객체를 ES6에서 Object literal이라 함

  • 메서드 축약 표현
    메서드의 이름과 키를 동일한 이름으로 사용할 경우 메서드를 축약하여 표현
    ex) printHello : function(){} ➡ printHello(){}

  • Object의 순회
    - object의 속성의 순서는 무순서
    - 배열처럼 순차적인 인덱스가 없음
    - 순회하기 위해서 for ~ in 문을 사용
    ex) const obj = { a : 1, b : 2, c : 3 };
          for (const key in obj){console.log(ket + ':' + obj [key]);}

< 자바스크립트의 데이터 타입 >

Datatype (in JavaScript)의 두 가지 종류
종 류 Primitive Data-type (기본 Data-type) Object Data-type
영 역 stack, global 영역 Heap 영역(에 올라가기만 하면 object가 된다!)
Heap에 allocation 하려면 (1) Object literal (2) new
느 낌 기본적으로 string, number, boolean 같은 것들 좀 더 복잡하고 복합적이고 등치도 좀 있음
예 시 reference  Object 기본  + ( Array / Class ) 양념쳐서 파생
비 고 - *Object에 올라가는 세가지 (올라가면 object가 된다!)

1) 우리가 원하는 Attribute(key, value) = data
2) 우리가 원하는 function(method)
3) 기타 설계상 필요한 것들, 기타 등의 세트 = prototype
728x90