Menu
CoddyTech

클래스와 객체 비교

Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 3번째.

클래스와 그 객체는 서로 다른 것을 보유합니다. 클래스의 const는 클래스 자체에 속합니다. 값은 하나뿐이며, 객체를 만들지 않고 클래스 이름을 통해 읽습니다.

# dog.gd
class_name Dog
extends RefCounted

const SPECIES = "Canis familiaris"
var dog_name: String = "Unnamed"
var breed: String = "Unknown"
print(Dog.SPECIES) # Canis familiaris

var 줄은 각 객체가 무엇을 담고 있는지 설명합니다. new()로 생성된 모든 객체는 기본값으로 시작하는 이러한 변수의 복사본을 각각 가집니다:

var dog1 := Dog.new()
var dog2 := Dog.new()
dog1.dog_name = "Nicky"
dog1.breed = "Husky"
print(dog1.dog_name) # Nicky
print(dog2.dog_name) # Unnamed

dog1을 변경해도 dog2는 그대로입니다. 객체도 상수를 읽을 수 있습니다. dog1.SPECIES는 Dog.SPECIES와 같은 값입니다.

객체에는 클래스에서 선언한 변수만 있습니다. dog1.color = "brown"은 프로그램을 오류와 함께 중단합니다. Dog에는 color 변수가 없기 때문입니다. 객체에 필요한 모든 변수는 클래스에 넣습니다.

challenge icon

챌린지

쉬움

student.gd에서 Student 클래스를 완성하세요.

  • 클래스 전체에서 공유하는 값이 "Godot High School"인 상수 SCHOOL
  • String 변수 student_name
  • 처음에 "N/A"로 설정되는 String 변수 grade

제공된 코드는 뒤따르는 학생 수를 읽은 다음, 학생마다 한 줄씩 읽습니다. 각 줄에는 이름이 있고, 선택적으로 공백과 성적이 뒤따릅니다. 코드는 각 줄에 대해 Student를 만들고, 이름을 설정하며, 줄에 성적이 있을 때만 성적을 설정합니다. 그런 다음 Student.SCHOOL과 모든 학생을 출력합니다. Alice A와 Bob 줄에 대해 다음을 출력합니다.

School: Godot High School
Alice has grade A
Bob has grade N/A

코드는 student.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

extends Node

func _ready():
	# 제공된 입출력 코드: 그대로 두세요
	var count := int(OS.read_string_from_stdin())
	var students: Array[Student] = []
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ", false)
		var student := Student.new()
		student.student_name = parts[0]
		if parts.size() > 1:
			student.grade = parts[1]
		students.append(student)
	print("School: %s" % Student.SCHOOL)
	for student in students:
		print("%s has grade %s" % [student.student_name, student.grade])
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러