17
묶음 강좌명 : 블록체인 13. 솔리디티 문법 이해와 프로그래밍 13-2. 솔리디티 프로그래밍 소개 블록체인응용과 실습

블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

묶음 강좌명 : 블록체인

13. 솔리디티 문법 이해와 프로그래밍13-2. 솔리디티 프로그래밍 소개

블록체인응용과 실습

Page 2: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

1. 솔리디티에서 문자열 병합 방법

블록체인 플랫폼에서 스마트계약서를

작성할 수 있다.

스마트계약 작성을 위한 솔리디티 문법의

특징을 설명할 수 있다.

Page 3: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

1. 솔리디티에서문자열병합방법(1)

Page 4: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

문자열대체(Replacement)

출처 조수현, 이더리움베이직, JPub

문자열의 일부를 다른 문자열로 대체하기 위한 기능

Page 5: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

문자열대체(Replacement)

문자열 대체에 사용되는 indexOF() 함수 구현

실행결과bytes1 0xff

Page 6: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

클래스와객체, 그리고인스턴스

클래스

• 객체의 공통된 특징을 기술한 것

• 객체의 특성과 행위를 정의

객체

• 물리적 공간을 갖는 구체적인 것, 실체

• 클래스의 인스턴스(실체)

• 클래스를 구체화한 객체를 인스턴스(Instance)라고 부름

• 객체와 인스턴스는 같은 뜻으로 사용

Page 7: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

클래스와객체, 그리고인스턴스

인스턴스

• 클래스: 자동차 객체 인스턴스: 출고된 자동차 100대

• 클래스: 벽시계 객체 인스턴스: 집 벽에 걸린 벽시계들

• 클래스: 책상 객체 인스턴스 : 사용중인 실제 책상들

Page 8: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

2. 솔리디티에서문자열병합방법(2)

Page 9: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

컨트랙트클래스와컨트랙트객체

솔리디티 : 다중 상속과 다형성 지원

클래스 : 사람

이름 김미남직업교수나이 47성별남혈액형 AB

이름 최승희직업 의사나이 45성별 여혈액형 A

이름 미녀직업골프선수나이 28성별여혈액형 O

이름, 직업,나이, 성별, 혈액형밥 먹기, 잠자기, 말하기, 걷기

객체 : 최승희 객체 : 이미녀 객체:김미남

Page 10: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

상속

상속관계의 클래스들은 계층구조를 구성할 수 있음

하위 계층의 클래스는 상위 계층의 모든 요소를 상속 받고추가적으로 필요로 되는 새로운 자료구조와 메소드를 더 가짐

하위 클래스는 상위 클래스를 확장한 개념임

상속의 개념을 이용하여 소프트웨어의 재사용(Reusing)을 지원함

Page 11: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

상속

상위 클래스

• 수퍼 클래스

하위 클래스

• 서브 클래스

서브 클래스

• 수퍼 클래스 코드의 재사용, 새로운 특성 추가 가능

솔리디티는 다중상속 지원

Page 12: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

상속

솔리디티는다중상속과다형성을지원함

이미존재하는컨트랙트를기반으로새로운컨트랙트를생성함

자식컨트랙트는부모컨트랙트가가진 Private 아닌모든변수/함수등을사용가능함

• 부모와 자식 모두 함수ㄹ()를 갖고 있음.

• 자식에서 ㄹ()를 실행하면?

“오버라이드 되었으므로,13 반환”

Page 13: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

컨트랙트의다형성

같은메시지또는함수에서객체에따라서다른동작가능함

다형성은오버라이딩(Overriding)과밀접한관계가있음

“야옹!”

동물소리내서

재정의25

One InterfaceMultiple Methods

“멍멍!” “꼬꼬댁!”

Page 14: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

컨트랙트의다중상속

상위컨트랙트와하위컨트랙트에동일한함수가있을때호출함같은메소드를가진두개의컨트랙트를모두상속받는경우

추상 컨트랙트

추상 컨트랙트

Named는 owned와 mortal에서 동시 상속오버라이드

상위 클래스의 오버라이드된 함수 호출

Page 15: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

컨트랙트의다중상속

• Child1, Child2, Child3 은모두 dad 와 mom을상속받지만 순서가 다름

• Child1에서 ㄹ ()를실행하면, mom의 ㄹ()를받아오기 때문에 20 반환

• Child2에서 ㄹ()를실행하면 dad의 ㄹ()를받아오기 때문에 10을 반환

• Child3에서 ㄹ 를 실행하면자기가 갖고 있는 ㄹ()로오버라이드 되었기 때문에30을 반환

Page 16: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

추상컨트랙트

추상컨트랙트자체는생성할수없음

추상컨트랙트가틀을잡아놓으면자식컨트랙트에서구체적인구조와기능을구현함

컨트랙트내부에서하나이상의함수가추상함수이면자동으로추상컨트랙트가됨

추상함수는단지함수이름과입력매개변수및출력매개변수만선언해두고내용은없는함수임

추후자식컨트랙트에서는이함수의내용을반드시구현이필요함

Function name (arg1, …, argn) option returns (res1, …, resn);

Page 17: 블록체인응용과실습 · 2019. 8. 21. · 묶음강좌명: 블록체인 13. 솔리디티문법이해와프로그래밍 13-2. 솔리디티프로그래밍소개 블록체인응용과실습

인터페이스

추상컨트랙트는자식컨트랙트에서구현할추상함수를포함하여자체적인기능도갖고있음

인터페이스는순수하게기능없이틀만제공, 모든함수를자식컨트랙트가구현하여야함

인터페이스에서는모든함수가추상함수이고, 다른컨트랙트나인터페이스를상속받을수없음

자체생성자, 변수, 구조체등을정의할수없음

Pragma solidity ^0.4.11;Interface BankingSystem {

function deposit(uint) returns (uint);function withdraw(uint) returns (uint);

}