2021/12/21 클래스와 자바스크립트 객체

이제 기초가 아니다 ㅎㅎㅎ oop
eomcs 자바 변경했으니 다시 삭제하고 받자

메서드끝
이제는 클래스 다루기

유투브로 검색해서 -머릿속에 그림그릴 수 있도록


03 클래스

복합데이터 - 여러개의 항목으로 구성된 데이터 (ex : 회원정보, 영화정보)
낱개의 변수를 사용하여 다루는 것보다 별도의타입으로 정의하여 한 단위로 묶어서 정의하는게 편함.

자바에서 제공하지 않는 데이터타입은 클래스문법을 이용하여 개발자가 정의할 수 있다.

반찬그릇,국그릇,밥그릇 vs 식판
1) 관리하기 편함
2) 용도별

CLASS 등장 이유

규모가 작으면 따로해도 상관없으나
규모가 커지면서 코딩 라인수가 많이지면서 코드를 체계적으로 관리할 필요가 생겨서
묶게됨

객체지향기능들이 포함

C언어 -구조체
시뮬라
스몰톡

C++ - 클래스 = > 자바
object of C (애플)


실습으로 먼저 배우자 객체지향프로그래밍 oop

mylist-boot
연락처 정보를 한 단위로 묶어서 다룰 새 데이터타입 정의

ContactClass 정의

클래스를 사용하는 목적
1) 데이터타입 정의 (user-defined 0Data Type) - 현재프로젝트
2) 메서드 분류

#class

(일반변수선언과 다름)

메모리 설계도
"new 명령을 실행하면 클래스에 정의된 대로 변수가 준비된다."

#클래스를 이용하여 새 데이터타입의 메모리만들기***

Contact c = new Contact();

		1)데이터타입명 = 클래스명 
		2)클래스 설계도에 따라 변수준비 (메모리를 준비한다.)  => Heap 영역에 준비 : new라는 명령으로 만드는 것만 존재
		3)인스턴스(instance) = 객체(object)
		4) 메모리 주소를 c 에 집어넣는다. 레퍼런스(reference)
cf. 자바스크립트의 문법과 다름 new함수();
	자바 - 생성자임  new Contact();

#레퍼런스 배열

  1. 배열 사용 전
    Contact 설계도에 따라 준비한 메모리 => Contact의 인스턴스(객체)
    시작주소를 레퍼런스에 저장
  • 인스턴스를 여러개 담으려면 레퍼런스도 여러개 있어야한다.

전화는 문자열로 표현해야한다. 0,010 (숫자가 아니다)

**** 자바문법에는 인스턴스배열을 만드는 문법이 없다.
객체의 주소를 담을 변수가 준비된것.

instance 끼리 연속된 메모리인지 보장안함. 만들때마다 메모리가 있으면 만드는것.

2) 레퍼런스 배열을 만들었다고 인스턴스존재하는게 아니다. 레퍼런스배열만 준비된것.

실무에서는 롬복이라 불리는 api가 있음(자동화) -> 우리는 getter setter를 먼저 쓰자


*쿼리스트링의 파라미터이름과 세테메서드의관계 (Spring boot가 하는 역할)

*Controller.java 게터와 세터를 지우면 ? 값이 들어가지않는다.

why?
class Contact {

String name;
String email;
String tel;
String company;

//변수명은 쿼리스트링의 파라미터와 아무상관없다.
//쿼리스트링의 파라미터값을 넣으려면 필요한건 세터메서드!

void setName(){...}
void setEmail(){...}
void setTel(){...}
void setCompany(){...}

}

수정 전
contacts[size++] = createCSV(name, email, tel, company)

수정 후
contacts[size++] = contact;

#레퍼런스와 인스턴스 변수

1) 인스턴스 변수에 값저장
c에 저장된 주소로 찾아가서 해당변수명에 값을 집어넣어라.

2) 인스턴스 변경

레퍼런스는 언제든지 다른 인스턴스의 주소 저장가능
기존 인스턴스의 주소를 알고있는게 없으면 garvage

30분부터 다시보자


낱개로 데이터를 다루는게 아니라
하나로 묶어서 사용하는 방법 (json객체)

백엔드 개발 끝

주소가 넘어온다.

서버에서 보내는 데이터가 달라짐
csv문자열 배열을 보냈음

지금은 객체 형식으로 보낸다.

배열 json
[{"프로퍼티변수명": "값"}, ]

parsing (자바스크립트)

index.html
view.html

넘어온게 자바스크립트 객체임으로 "," 따로 자를필요없어

fetch(/contact/get?email=${email})
.then(function(response) {
return response.json();//json 응답데이터를 자바스크립트객체로

.then(function(contact) {
  var values = contact.split(",");

  // 4) 연락처 상세 정보를 화면에 출력한다.
  xName.value = values[0];
  xEmail.value = values[1];
  xTel.value = values[2];
  xCompany.value = values[3];
});

웹브라우저가 호출할때 객체주소를 넘긴다.
mylist 다시 확인


# 자바스크립트 객체 - 자바처럼 설계도가 따로 필요없다.

자바스크립트는 자바를 모방해서 만들었기에
자바의 메서드은 toString()이 들어있다.

var obj2 = Object.create(Object.prototype);//객체의 주소를 넣어준것 최소 object라는 객체를 통해서 생성

2번째 방법 라이브러리생성 - 종종 사용할 코드들의 묶음 + 다른개발자가 사용할 유용한 메소드나 변수를 묶어둔다.

var obj3 = new Object()
var obj4 = {};
우리는 3번,4번째를 많이씀


자바스크립트 객체는 퉁쳐서 프로퍼티 (프로퍼티 지만 함수, 변수)
함수 주소를 저장하면 함수처럼 쓸수 있는것.

function f1(a, b) {
return a + b;
}

obj.plus1 = f1;
obj['plus1'](100, 200);

[Object object] object 생성자로 초기화시킨 객체다.


자바스크립트 객체와 자바의 객체를 동시에 보지마라.

글로벌변수 또한
글로벌 객체에도 key:value

포함관계 = 객체는 각자 떨어져있지만 주소로 가리킨다.
(진짜 객체를 포함할 수 는 없음, 쉽게 표현상 포함이라는 말을 쓴다.)

이 객체가 이 함수를 품고(담고)있다고 이야기 할 수 있는 것(개념적)
실제는 그 객체의 주소를 갖고있는 것
=> 자바와 자바스크립트 동일

obj.other.v3
=> 객체 선그래프를 따라가는 경로를 표기한 문법( Object Graph Navigation Language) - 객체에 접근하기 위한 언어표현법

obj.other.v3 주소를 찾아간다.

네이버라고 모두 최신기술을 쓰지않는다. 하지만 휴가쓰기는 좋다.
이직하는게 중요

*자바스크립트 객체 생성코드와 JSON
Javascript 생략가능 '' ""

json은 - 자바스크립트 코드를 참고해서 만든 데이터 표현형식 "문자열 "


웹브라우저 환경에서 global객체는 window 객체 (최상위글로벌객체)
node.js 웹브라우저 환경이 아니므로 window객체가 없음

함수객체 만들고 그 주소를 저장해 => 간결하게 객체에 함수를 포함시켜


웹브라우저

{}
[[Prototype]]: Object

이 객체는 Object 생성자로 초기화시켰습니다. 라는 뜻

원본은 기본객체로 초기화시켰지만 생성자는 createScore

mylist 백엔드, 프론트엔드 - > class 사용해서 한단계 진화시켜
자바스크립트 객체 ex04 01 ~ 10-10.html 복습

코드에 익숙해지려면 한번 실습예제를 따라쳐보자.
오타율 줄이기, 영타 늘이기, 문법에 익숙해지기


좋은 웹페이지 즐겨찾기