-
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study04 { public class App { //생성자 public App() { //Inventory 클래스의 인스턴스가 생성되고 변수 inven에 할당 //Inventory 클래스의 생성자 호출 Inventory inven = new Inventory(3); //Item 클래스의 인스턴스가 생성되고 변수 item1에 할당 //Item 클래스의 생성자 호출 //인스턴스 item1의 Name 속성에 "장검"할당 Item item1 = new Item("장검"); //인스턴스inven에 접근, 인자 item1으로 AddItem 메서드를 호출 inven.AddItem(item1); inven.AddItem(new Item("단검")); inven.AddItem(new Item("활")); inven.AddItem(new Item("창")); //공간이 부족합니다. //인스턴스inven에 접근, 인자 "장검"으로 GetItem 매서드를 호출 inven.GetItem("장검"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study04 { internal class Inventory { public Item[] items; private int nextIndex = 0; //멤버 변수이기 때문에 메소드가 실행이 끝나고 꾸준히 증가함 //생성자 public Inventory(int capacity) { //Item배열 형식의 인스턴스가 생성되고 맴버 변수items에 할당 //Item클래스의 생성자 호출 this.items = new Item[capacity]; } public void AddItem(Item item) { //Item형식의 item1을 매개변수로 전달받음 //메소드 진행간에 item은 인스턴스 item1이 소유한 값으로 진행 //맴버변수 nextIndex (현재는 0) 가 3보다 크거나 같으면 공간부족을 출력하고 메소드 진행을 즉시 중단 if (this.nextIndex >= this.items.Length) { Console.WriteLine("공간부족"); return; } //멤버변수 nextIndex (현재는 0) 이 3보다 작으면 인스턴스 inven의 nextIndex와 배열변수items의 Length를 출력한다 Console.WriteLine("{0},{1}", this.nextIndex, this.items.Length); //출력이 끝나면 배열변수items의 요소 items[nextIndex](현재는 0)에 item을 할당하고나서 다음 실행에 맴버변수nextIndex를 후위연산하여 1을 증가시킨다. this.items[this.nextIndex++] = item; } public Item GetItem(string name) { //매개변수"장검"을 전달받음 이 메서드 내에서 name변수에 "장검"이 할당된 상태 //메서드 진행이 끝나면 지역변수는 사라지기 때문에 실제로 찾은 Item형식의 값을 저장하기 위해 foundItem변수를 정의하고 초기화 Item foundItem = null; //Item형식의 배열변수 items내에 Item형식의 item들에 반복 순차 진행, 지역변수 item을 이용. //위의 AddItem메서드에서 this.items[this.nextIndex++] = item; 코드로 배열변수 items내에는 Item형식의 item들이 할당되어 있는 상태임. foreach (Item item in items) { //만약 배열변수 내의 요소 Item 형식의 item변수의 이름이 전달받은 매개변수 "장검"과 이름이 같다면 if문을 진행 if (item.Name == name) { //찾은 Item형식의 item변수의 맴버변수 Name을 출력 Console.WriteLine("{0}을 찾았습니다.", item.Name); //찾은 Item형식의 item을 foundItem변수에 저장 foundItem = item; //원하던 이름의 Item형식의 item변수를 찾았다면 foreach 반복문을 중단. break; } }//end of foreach Console.WriteLine("{0}을 찾지못했습니다", name); //찾은 Item 형식의 item변수는 메서드가 끝나면 사라지기 때문에 foundItem변수에 저장해두었다가 메서드가 종료되기전에 Item형식으로 반환값을 출력함. return foundItem; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study04 { public class Item { public string Name { get; set; } public Item(string name) { //생성자 //매개변수 name에 값이 속성 Name에 할당됨 this.Name = name; } } }
'C# > 수업내용' 카테고리의 다른 글
퀘스트 생성 및 진행 (0) 2022.06.22 몬스터 잡고 아이템 드랍 저장, 싱글톤 데이터매니저 (0) 2022.06.20 대리자, 람다식, 익명함수 이해 (0) 2022.06.16 늑대 미니게임 (0) 2022.06.10