티스토리 뷰
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
public class Animal
{
protected string Name; //필드
private int Level; //필드
private int maxLevel = 100 ;
private int minLevel = 1;
public void UpLevel()
{
if (this.Level < this.maxLevel)
Level++;
else
Console.WriteLine("레벨을 증가할 수 없습니다.");
}
public void UpLevel(int Level)
{
if (this.Level < this.maxLevel)
this.Level += Level;
else
Console.WriteLine("레벨을 증가할 수 없습니다.");
}
public string GetName()
{
return this.Name;
}
public int GetLevel()
{
return this.Level;
}
public Animal()
{
}
public Animal(int Level)
: this()
{
if (Level < this.minLevel)
{
this.Level = this.minLevel;
Console.WriteLine("올바른 레벨이 입력되지 않아 최소 레벨로 조정하였습니다.");
}
else if (Level > this.maxLevel)
{
this.Level = this.maxLevel;
Console.WriteLine("올바른 레벨이 입력되지 않아 최대 레벨로 조정하였습니다.");
}
else
{
this.Level = Level;
}
}
public Animal(int Level, string Name)
: this(Level)
{
this.Name = Name;
}
~Animal()
{
}
public virtual void Sound() //override 대상
{
Console.WriteLine(Name + ": 소리내다");
}
}
public class Cat : Animal
{
public Cat()
{
}
public Cat(int Level) : base(Level)
{
}
public Cat(int Level, string Name) : this(Level)
{
base.Name = Name;
}
public void Meow()
{
Console.WriteLine(Name + " : 야옹");
}
public override void Sound()
{
//base.Sound();
this.Meow();
}
}
public class Dog : Animal
{
public Dog()
{
}
public Dog(int Level) : base(Level)
{
}
public Dog(int Level, string Name) : this(Level)
{
base.Name = Name;
}
public void Bark()
{
Console.WriteLine(Name + ": 멍멍");
}
public override void Sound()
{
//base.Sound();
this.Bark();
}
}
/*
public class Dog
{
private string Name; //필드
private int Level; //필드
public void UpLevel()
{
Level++;
}
public string GetName()
{
return this.Name;
}
public int GetLevel()
{
return this.Level;
}
public Dog()
{
}
public Dog(int Level) : this()
{
this.Level = Level;
}
public Dog(int Level, string Name) : this(Level)
{
this.Name = Name;
}
~Dog()
{
}
}
public class Cat
{
//데이터 - 필드, 프로퍼티, 이벤트 ....
//public String Name; //필드
//public int Level; //필드
//접근한정자 public 제거
//접근한정자 private이 됨.
private string Name; //필드
private int Level; //필드
//메소드
public void UpLevel()
{
Level++;
}
//private인 Name,Level을 뽑아내기 위한 메소드
public string GetName()
{
return this.Name;
}
public int GetLevel()
{
return this.Level;
}
// 모든 클래스에는 하나 이상의 생성자(특수메소드)
// 아래는 기본 생성자- 기본 생성자는
// 선언하지 않으면 컴파일러가 알아서 넣어줌.
// 즉, 모든 클래스에는 적어도 하나 이상의 생성자
// 존재
public Cat()
{
Console.WriteLine("생성자 Cat()");
}
// * 생성자는 오버로딩이 가능합니다. (완전중요)
// 메소드 오버로딩은 뭘로 결정하지요?
// 매개변수 갯수, 형식(타입)
public Cat(int Level) : this()
{
//this는 메소드가 소속된 클래스를 가리킴.
this.Level = Level;
//Level = this.Level; (x)
//Level = lvl; (o) 매개변수를 lvl선언
Console.WriteLine("생성자 Cat(int Level)");
}
public Cat(int Level, string Name)
{
this.Level = Level;
this.Name = Name;
}
아래처럼 this를 이용해도 됩니다.
public Cat(int Level, string Name) : this(Level)
{
this.Name = Name;
Console.WriteLine("생성자 Cat(int Level, string Name)");
}
// 모든 클래스에는 "하나"의 소멸자(특수메소드)
// 오버로딩 불가 x
// 호출을 코드로 할 수 없음(즉, 프로그래머가 할 수 없음)
// 누가호출 : GC (Garbage collector)
~Cat()
{
}
}
* */
public class Zoo2
{
public Animal[] animals = new Animal[10];
Random rand = new Random();
public Zoo2()
{
for (int i = 0; i < animals.Length; i++)
{
//int r = rand.Next(2); // 2=maxValue
// 0 ~ (maxValue-1)
if (0 == rand.Next(2))
{
animals[i] = new Dog(1, "견" + i);
}
else
{
animals[i] = new Cat(1, "묘" + i);
}
}
}
}
public class Zoo
{
public Dog[] dogs;
public Cat[] cats;
public Zoo()
{
dogs = new Dog[5];
cats = new Cat[5];
for (int i = 0; i < dogs.Length; i++)
{
dogs[i] = new Dog(1, "견" + i);
cats[i] = new Cat(1, "묘" + i);
}
}
}
class Program
{
static void Main(string[] args)
{
Cat kitty = new Cat(); // int a = 100;
// 1) Cat 타입의 kitty를 하나 선언
// 2) new 연산자로 Heap공간 확보
// Cat()이라는 Cat 클래스의 생성자 호출
// 생성자를 호출해야 해당 객체가 만들어짐.
// 3) 생성된 Cat 객체의 reference값을
// kitty에 대입
// * 이제부터 kitty를 통해서 생성된 Cat에 접근
//kitty.Name = "키티";
//kitty.Level = 1;
// .(dot)연산자를 통해 kitty가 참조하고 있는
// Cat의 객체에 접근 할 수 있음.
//kitty.UpLevel();
//kitty.UpLevel();
//kitty네 놈의 레벨이 알고 싶구나
//int lvl = kitty.Level;
//Console.WriteLine(kitty.GetName() + "의 레벨 " + kitty.GetLevel());
//Cat nero = new Cat(5);
//nero.Name = "네로";
//nero.UpLevel();
//nero.Level = 1;
//Console.WriteLine(nero.GetName() + "의 레벨 " + nero.GetLevel());
Cat navi = new Cat(-2, "나비");
navi.UpLevel();
Console.WriteLine(navi.GetName()
+ "의 레벨 " + navi.GetLevel());
Cat nero = new Cat(13, "네로");
nero.UpLevel(7);
Console.WriteLine(nero.GetName()
+ "의 레벨 " + nero.GetLevel());
Dog dog = new Dog(103, "개");
dog.UpLevel();
dog.UpLevel(3);
Console.WriteLine(dog.GetName()
+ "의 레벨 " + dog.GetLevel());
nero.Meow();
dog.Bark();
Zoo zoo = new Zoo();
foreach (Cat c in zoo.cats)
{
Console.WriteLine(c.GetName() + "/"
+ c.GetLevel());
c.Meow();
}
foreach (Dog c in zoo.dogs)
{
Console.WriteLine(c.GetName() + "/"
+ c.GetLevel());
c.Bark();
}
Zoo2 zoo2 = new Zoo2();
foreach (Animal a in zoo2.animals)
{
Console.WriteLine(a.GetName() + "/"
+ a.GetLevel());
a.Sound();
/*
if (a is Dog)
{
Dog dog3 = (Dog)a;
dog3.Bark();
}
Cat cat = a as Cat;
if (cat != null)
cat.Meow();
*/
}
}
}
}
'IT Skills > Programming' 카테고리의 다른 글
JAVA 전쟁 프로젝트 (0) | 2013.05.06 |
---|---|
C# -- 동물농장 (0) | 2013.04.29 |
C# - 시험참고자료#` (0) | 2013.04.22 |
java 계산기 (0) | 2013.04.15 |
C#-수강신청 (0) | 2013.04.10 |
- Total
- Today
- Yesterday
- 디지몬
- PS2
- 아이폰X
- 고양이
- 라이언
- 플스2
- 구글
- razer
- 윈도우즈 10
- 애드센스
- 건담
- 카카오프렌즈
- 일본여행
- javascript
- 보스
- AMD
- 이어폰
- 마우스
- 일본
- m5a97
- 프로그래밍
- ps4
- Windows 10
- 안산
- 피규어
- 듀얼쇼크4
- Asus
- 디지바이스
- 프라모델
- 노트북
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |