신입 개발자 공부 과정

12/29수업 item + inventory 본문

C#/수업 내용

12/29수업 item + inventory

Lewisjkim 2021. 12. 29. 20:01

Q1.

item
---
name
---
Item item1 = new Item("장검")
COnsole.WriteLine(item1.name); //장검

A1.

Program

using System;

namespace _1229class
{
    class Program
    {
        static void Main(string[] args)
        {
            Item item1 = new Item("장검");
            Console.WriteLine(item1.name); //아이템 '장검' 생성 되었습니다.
        }
    }
}

Item

using System;
using System.Collections.Generic;
using System.Text;

namespace _1229class
{
    
    class Item
    {
        public string name;
        
        public Item(string name)
        {
            Console.WriteLine("아이템'{0}'생성 되었습니다.", name);
        }
    }
}

output:

 

Q2.

Item 객체(인스턴스)를 그룹화 관리

1.배열

Item 배열 inventory를 정의하고 초기화 합니다 크기는 5개

인벤토리에다가 방금만든 장검(아이템 객체)를 넣어주세요

 

Item 객체(인스턴스)를 그룹화 관리

1. 배열

2. 컬렉션

Item 객체(인스턴스)를 그룹화 관리

1. 배열

Item 배열 inventory를 정의하고 초기화 합니다 크기는 5개

인벤토리에다가 방금만든 장검 (아이템 객체)를 넣어주세요

Item[] inventory = new Item[5]; inventory[0] = item1;

for을 사용해서 인벤토리에 있는 모든 아이템들의 이름을 출력 하세요

foreach 인벤토리에 있는 모든아이템들의 이름을 출력 하세요

-> 장검

->

->

->

->

 

A2.

몰랐던 부분:

inventory.GetCount() // 인벤토리의 내의 매게변수의 개수를 찾으려면 인벤토리 배열이 필요하고 GetCount()메서드가 필요하다.

 

Item

using System;
using System.Collections.Generic;
using System.Text;

namespace _1229class
{
    
    class Item
    {
        public string name;

        
        
        public Item(string name)
        {
            this.name = name; //이게 있어야 이름이 출력된다
            Console.WriteLine("아이템'{0}'생성 되었습니다.", name);
        }
    }
}

Program(for문)

using System;

namespace _1229class
{
    class Program
    {
        static void Main(string[] args)
        {
            Item item1 = new Item("장검");
           
            Item[] inventory = new Item[5]; //Item 배열 inventory를 정의하고 초기화 합니다 크기는 5개 
                                            
            inventory[0] = item1;           //인벤토리에다가 방금만든 장검(아이템 객체)를 넣어주세요

            for (int i = 0; i<inventory.Length; i++) //for을 사용해서 인벤토리에 있는 모든 아이템들의 이름을 출력 하세요 
            {
                Item item = inventory[i];//배열 인벤토리[i]를 item에 선언하고
                if(item != null)
                {
                    Console.WriteLine("**{0}", item.name);
                }
                else
                {
                    Console.WriteLine("**");
                }
                
            }

        }
    }
}

program(foreach문)

using System;

namespace _1229class
{
    class Program
    {
        static void Main(string[] args)
        {
            Item item1 = new Item("장검");
           
            Item[] inventory = new Item[5]; //Item 배열 inventory를 정의하고 초기화 합니다 크기는 5개 
                                            
            inventory[0] = item1;           //인벤토리에다가 방금만든 장검(아이템 객체)를 넣어주세요

            
            foreach (Item items in inventory)
            {
                if (items != null)
                {
                    Console.WriteLine("**{0}", items.name);
                }
                else
                {
                    Console.WriteLine("**");
                }
            }

        }
    }
}

**몰랐던 부분

생성자 연결하면서 Item 생성자에 this.name = name;을 추가하지 않아서 이름이 제대로 나오지 않았다.

**생성자 추가공부**

 

Q3.

객체 지향적으로 코드를 작성할 수 있는가?

클래스 정의 및 매서드 구현

 

A3.(다 안됐슴)

Inventory

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inventory
{
    class Inventory
    {
        private Item[] itemsize;//배열이 있어야 카운트가 되서
        private string item;
        private int index = 0;
        //생성자
        public Inventory(int itemNB)//5
        {
            this.itemsize = new Item[itemNB];//itemsize[]배열에 Item 객체 intemNB가 추가된다.
            Console.WriteLine("인벤토리{0}개가 생성되었습니다.", itemNB);
        }

        //AddItem메서드
        public void AddItem(Item item)
        {
            if(this.index>this.itemsize.Length-1)
            {
                Console.WriteLine("더이상 아이템을 추가 할 수 없습니다.");
            }
            
            else
            {
                this.itemsize[index] = item;//배열 itemsize에 item을 넣어야한다.
                                            //item을 배열 itemsize에 추가하려고 할 때마다 index가 증가해야 되므로
                                            //현재 인덱스와 마지막 인덱스를 알아야된다.
                                            //아래 cw은 그것을 인덱스를 확인하는 것.
                Console.WriteLine("현재 인덱스: {0}, 마지막 인덱스{1}", this.index, this.itemsize.Length - 1);
                //현재 인덱스에 item을 추가하고 나서 index를 다음 index로 증가해야되서
                index++;
            }
            

        }

        //GetCount메서드
        public int GetCount() //배열에 크기의 숫자를 카운트
        {
            int count = 0;
            for(int i = 0; i < this.itemsize.Length; i++)
            {
                if(this.itemsize[i] != null)
                {
                    count++;
                }
            }
            return count;
        }



    }
}

 

Item

using System;
using System.Collections.Generic;
using System.Text;

namespace _1229class
{
    
    class Item
    {
        public string name;
        
        
        
        public Item(string name)
        {
            this.name = name; 
            Console.WriteLine("아이템'{0}'생성 되었습니다.", name);
        }
        
        
    }
}

 

Program

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inventory
{
    class Program
    {
        static void Main(string[] args)
        {

            Item item1 = new Item("장검");
            Item item2 = new Item("대거");
            Item item3 = new Item("활");
            Item item4 = new Item("총");
            Item item5 = new Item("머신건");
            Item item6 = new Item("바주카");

            Inventory inventory = new Inventory(5);//인벤토리 객체
            inventory.AddItem(item1); //인벤토리에 ADDItem 메서드를 만들고 매게변수(item)필요
            inventory.AddItem(item2);
            inventory.AddItem(item3);
            inventory.AddItem(item4);
            inventory.AddItem(item5);
            inventory.AddItem(item6);
            //inventory.AddItem(new Item("대거"));
            //inventory.AddItem(new Item("활"));
            //inventory.AddItem(new Item("총"));
            //inventory.AddItem(new Item("너클"));
            int count = inventory.GetCount();
            Console.WriteLine(count);   //1
        }
    }
}

 

Q4. 

배열을 순회 하며 아이템을 찾는 알고리즘 테스트