하리Hari

1. 클래스 (객체 설계도)

붕어빵 틀을 만들어서 똑같은 구조의 데이터를 슉슉 찍어볼까요?

규모가 큰 프로그램을 만들 때는 비슷한 데이터와 기능들을 하나로 묶어두면 아주 편리해요. 이것을 객체지향 프로그래밍이라고 부릅니다. 하리(Hari)에서는 이를 어떻게 구현하는지 하나씩 친절하게 알아볼까요?

클래스는 일종의 **붕어빵 틀(설계도)**이에요. 이 틀 하나만 잘 짜두면 수많은 붕어빵(객체)을 쉽게 찍어낼 수 있답니다! [클래스]를 설계하자: 키워드로 설계도를 만들고, 처음 만들어질 때로 기본 세팅(생성자)을 정해줍니다.

[자동차]를 설계하자:
    '색상'을 [문자열]인 "하양"으로 정하자
    '속도'를 [숫자]인 0으로 정하자

    처음 만들어질 때 ([문자열]인 '초기색상') 다음과 같이 하자:
        '나'의 '색상'을 '초기색상'으로 정하자

    <달리기>를 만들자 ([숫자]인 '증가량'):
        '나'의 '속도'에 '증가량'을 더하자
        틀"부릉부릉! 현재 속도는 {'나'의 '속도'}입니다."를 출력하자

'내차'를 [자동차]인 새로운 [자동차]("파랑")으로 정하자
틀"내 차 색상: {'내차'의 '색상'}"을 출력하자
'내차'의 <달리기>(50)을 실행하자

여기서 '나'(this)는 객체 스스로를 가리키는 특별한 단어예요. 내 안의 변수나 함수를 쓸 때는 꼭 '나'의를 붙여주세요! 객체를 새로 만들 때는 새로운 [클래스]() 키워드를 꼭 사용해요.


정적 멤버 (Static Members)

클래스 하나당 하나만 존재해서 모든 객체가 공유하는 정보나 기능이 필요할 때가 있죠? 그럴 때는 '나' 대신에 '우리'의 '속성' 또는 '우리'의 <메서드>를 사용해요!

[자동차]를 설계하자:
    '우리'의 '총생산량'을 [숫자]인 0으로 정하자

    처음 만들어질 때 () 다음과 같이 하자:
        '우리'의 '총생산량'에 1을 더하자

    [자동차]를 돌려주는 '우리'의 <공장>을 만들자 ():
        새로운 [자동차]()를 돌려주자

'첫차'를 [자동차]인 새로운 [자동차]()로 정하자
'두번째차'를 [자동차]인 [자동차]의 <공장>()으로 정하자

틀"지금까지 만들어진 자동차 수: {'자동차'의 '총생산량'}"을 출력하자

연산자 덮어쓰기 (Operator Overloading)

객체들끼리 덧셈을 하거나 같은지 비교(==)하고 싶을 때는 매직 메서드를 사용해요! 예를 들어 두 좌표의 위치가 같은지 확인하고 싶다면 <기호 같다> 메서드를 만들면 된답니다.

[좌표]를 설계하자:
    'x'를 [숫자]인 0으로 정하자
    'y'를 [숫자]인 0으로 정하자
    
    처음 만들어질 때 ([숫자]인 '초기x', [숫자]인 '초기y') 다음과 같이 하자:
        '나'의 'x'를 '초기x'로 정하자
        '나'의 'y'를 '초기y'로 정하자
        
    [논리]를 돌려주는 <기호 같다>를 만들자 ([좌표]인 '대상'):
        만약 ('나'의 'x'와 '대상'의 'x'가 다르다) 라면:
            거짓을 돌려주자
        만약 ('나'의 'y'와 '대상'의 'y'가 다르다) 라면:
            거짓을 돌려주자
        참을 돌려주자

'점1'을 [좌표]인 새로운 [좌표](10, 20)으로 정하자
'점2'을 [좌표]인 새로운 [좌표](10, 20)으로 정하자

만약 ('점1'과 '점2'가 같다) 라면: 
    "두 좌표의 위치가 같습니다!"를 출력하자

동적 리플렉션 (Dynamic Reflection)

프로그램이 실행되는 중에 문자열이나 변수를 사용해서 동적으로 메서드를 부르고 싶다면 <'변수명'>() 문법을 사용해요.

[주문]을 설계하자:
    <취소하기>를 만들자 ():
        "주문이 취소되었습니다."를 출력하자

'주문서'를 [주문]인 새로운 [주문]()으로 정하자
'행동명'을 [문자열]인 "취소하기"로 정하자

(참고: 꺾쇠 안에 변수를 넣으면 런타임에 메서드를 찾아서 실행해요)
'주문서'의 <'행동명'>()을 실행하자
놀이터
결과
코드를 작성하고 '실행' 버튼을 눌러보세요.