일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 컨트렉트 배포 자동화
- 스마트 컨트렉트 함수이름 중복
- 러스트 기초
- ethers type
- ethers v6
- nest.js설명
- 프록시배포구조
- git rebase
- ethers websocket
- 스마트컨트렉트프록시
- Vue
- ethers typescript
- 체인의정석
- vue기초
- multicall
- 러스트 기초 학습
- 머신러닝기초
- ethers
- 스마트컨트렉트 함수이름 중복 호출
- SBT표준
- chainlink 설명
- 스마트컨트렉트 예약어 함수이름 중복
- 티스토리챌린지
- 오블완
- rust 기초
- 러스트기초
- Vue.js
- 스마트컨트렉트테스트
- ambiguous function description
- 컨트렉트 동일한 함수이름 호출
- Today
- Total
체인의정석
객체지향 프로그래밍 하기 - 모듈 구현 기준 본문
객체 지향 프로그래밍을 한다는 것은 해당 클래스 내에서는 해당 클래스 안의 함수만 실행하는 것. 하위 단계의 클래스에 잇는 함수는 하위 단계에서 정의가 되어야 한다. 처음에 프로그램을 짰을 때 하위 클래스를 모두 만들고 해당 클래스를 모두 가져와서 사용하는 모듈을 짜는 식으로 프로그래밍을 하였다. 하지만 이는 객체 지향 프로그래밍과 가깝지 않으므로 하위 단계에 모든 기능을 구현하고 상위에서는 하위 단계의 기능을 가져와서 쓰기만 하는 식으로 코딩을 바꿔서 다시 하였다.
마찬가지로 클래스 nested 형태로 만들 때 Common이라는 공통 클래스를 만들어서 상속을 시켰는데 이는 나중에 모듈을 사용할 때 공통적으로 쓰이는 부분을 추가할 수도 있기 때문에 지금 당장은 사용하지 않더라고 넣어 달라는 피드백을 받았다.
특히 모듈 형태로 프로그램을 만들어야 하므로 사용자들이 사용할 수 있는 방향을 최대한 열어주어야 한다.
현재 모듈에서는 객체 형태를 받아와서 클래스를 생성해주는 역할을 했지만, 더 나아가서 api로 주고 받을 수 있게 json 형태로 바꾸고 다시 클래스로 변환해 주는 모듈이 모든 하위 클래스에도 모두 구현이 되는 식으로 프로그램을 수정 중이다. 따라서 다음과 같은 common class를 두고 상속받는 식으로 다시 재구성하고 있다.
export class Common {
toJson(input) {
const result = JSON.stringify(input);
return result;
}
fromJson() {}
validate() {}
}
export interface LegalPersonNameIDType {
legalPersonName: string;
legalPersonNameIdentifierType: string;
}
export class LegalPersonNameID extends Common {
protected legalPersonName: string;
protected legalPersonNameIdentifierType: LegalPersonNameTypeCode;
constructor(lLegalPersonNameIDType: LegalPersonNameIDType) {
super();
this.legalPersonName = lLegalPersonNameIDType.legalPersonName;
if (lLegalPersonNameIDType.legalPersonNameIdentifierType) {
this.legalPersonNameIdentifierType = toLegalPersonNameTypeCode(
lLegalPersonNameIDType.legalPersonNameIdentifierType,
);
}
}
static fromJson(json) {
return new LegalPersonNameID({
legalPersonName: json.legalPersonName,
legalPersonNameIdentifierType: json.legalPersonNameIdentifierType,
});
}
}
interface에서는 stirng으로 받고 이를 constructor에서 enum type으로 고쳐주므로서 json형태에서 JSON.parse 이후에 자바스크립트 객체 형태에서 바로 type 객체를 생성할 수 있었다.
'개발' 카테고리의 다른 글
객체지향 프로그래밍 하기2 (0) | 2021.07.16 |
---|---|
자바스크립트 객체에서 key값과 value 값이 같은 경우 (0) | 2021.07.15 |
javascript map 함수 (0) | 2021.07.15 |
javascript 정적 메소드 (0) | 2021.07.15 |
TypeScript에서 에러 발생시켜서 특정 위치의 변수 체크하기 (0) | 2021.07.15 |