0321 기초 복습!
2021. 3. 19. 18:02ㆍC#/수업내용
while | 반복문 / 정확한 반복 횟수를 알 수 없을 때 쓴다. (괄호) 안 조건문이 true일 때 수식을 수행한다. |
연산자 | && (And), || (Or), ! (Not) int val = (a > b) ? a : b; [설명] a가 b보다 크면 val에 a 값을 대입하고, 같거나 작으면 b 값을 대입한다 |
매서드(반환형식) | 모든 작업을 수행하고 반환받고자 하는 데이터 타입 |
매서드(return) | 수행한 결과인 반환값을 호출한 메소드로 전달 |
매서드(매개변수ㅇ) | 작업을 수행하는데 필요한 값들을 내부로 전달하기 위해 사용되는 변수 |
매서드 오버로딩 | 메소드 명이 같아도 매개변수가 다르면 다른 메소드로 취급 |
매서드 오버라이딩 virtual, override | 상속 받은 메소드에 재정의를 할 수 있다. |
클래스 | 참조 형식. new 키워드를 통해 인스턴스화가 된다. 개체가 만들어지면 해당 특정 개체에 대해 관리되는 힙에 메모리가 할당되고, 변수에는 개체 위치에 대한 주소만 포함된다. [접근 제한자] class 클래스명 { // 필드, 메소드 ... } |
클래스 상속 | 부모 클래스를 상속받은 자식 클래스는 부모 클래스의 모든 멤버를 물려받게 된다. (다만, 생성자는 상속이 되지 않으며 객체 생성 시 부모 클래스의 생성자가 자동으로 호출됨) private로 선언된 멤버는 상속할 수 없다. base 키워드를 사용하면 부모 클래스에 접근할 수 있다. 클래스명 앞에다 sealed 키워드를 사용하게 되면, 이 클래스를 상속시키는 건 더이상 할 수 없다. |
클래스 인터페이스 | 인터페이스 내에서는 메소드, 이벤트, 인덱서, 속성이 쓰일 수 있으며, 필드를 포함할 수 없다. 그리고 인터페이스의 모든 멤버는 public로 접근 권한이 기본으로 지정. 클래스의 한 종류 |
맴버 변수 | 맴버 변수는 클래스 안에 정의한다. |
속성 | set, get 접근자는 각각 속성을 읽거나, 새 값을 할당할 때 사용된다. 클래스 내부에서만 사용할 수 있도록 private로 접근을 제한해 버린다. 내부에 있는 변수를 수정해야 할 상황에서, get 접근자만 존재한다면 읽을 수만 있으며, set 접근자만 존재하면 쓸 수만 있으며, 두 접근자가 모두 존재하면 읽을 수도 있고, 쓸 수도 있게 된다. |
public, private | 접근 제한자를 통하여 특정 멤버를 공개할 것인지 공개하지 않을 것인지 지정해 줄 수 있다. 안정성을 위해, 외부에서 이를 수정하지 못하게 안전성을 고려 |
ref | |
structrue | 클래스와 상당히 비슷한 구조, 구조체는 주로 몇 가지의 항목으로 구성된 간단한 개체를 구조화하기 위해 사용된다. struct Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } |
클래스와 메서드 호출하기 + 반복문/if문 사용
public App()
{
Console.WriteLine("App생성자");
Marine hong = new Marine();
hong.name = "홍길동";
hong.hp = 75;
hong.damage = 5;
Console.WriteLine("{0} {1} {2}", hong.name, hong.hp, hong.damage);
Marine lim = new Marine();
lim.name = "임꺽정";
lim.hp = 75;
lim.damage = 5;
Console.WriteLine("{0} {1} {2}", lim.name, lim.hp, lim.damage);
if (lim.hp > 0)
{
while (lim.hp > 0)
{
hong.Attack(lim);
Console.WriteLine("{0}의 hp가 {1}이 되었습니다.", lim.name, lim.hp);
}
lim.Die();
Console.WriteLine("{0}의 hp가 {1}이 되었습니다.", lim.name, lim.hp);
}
}
public class Marine
{
public string name;
public int hp;
public int damage;
public Marine()
{
}
public void Attack(Marine target)
{
Console.WriteLine("{0}이(가) {1}을(를) 공격합니다.", this.name, target.name);
target.Hit(this.damage);
}
public void Hit(int damage)
{
this.hp -= damage;
Console.WriteLine("{0}이(가) 피해({1})를 받았습니다.", this.name, damage);
}
public void Die()
{
Console.WriteLine("마린이 죽었습니다.");
}
}
public class Tomerry
{
public string name;
public int hp;
public int damage;
public Tomerry()
{
Console.WriteLine("토머리가 입장합니다.");
Random damage = new Random();
this.damage = damage.Next(1, 11);
}
public void Attack(Librarian target)
{
Console.WriteLine("{0}가 {1}를 공격합니다.", this.name, target.name);
target.Hit(this);
}
public void Hit(Librarian target)
{
this.hp -= target.damage;
Console.WriteLine("{0}가 피해({1})를 받았습니다.", target.name, this.damage);
Console.WriteLine("토머리 현재 체력: {0}", this.hp);
}
public void Die()
{
Console.WriteLine("토머리가 죽었습니다.");
}
}
public class Librarian
{
public string name;
public int hp;
public int damage;
public Librarian()
{
Console.WriteLine("사서가 입장합니다.");
Random damage = new Random();
this.damage = (damage.Next(1, 6) * 2);
}
public void Attack(Tomerry target)
{
Console.WriteLine("{0}가 {1}를 공격합니다.", this.name, target.name);
target.Hit(this);
}
public void Hit(Tomerry target)
{
this.hp -= target.damage;
Console.WriteLine("{0}가 피해({1})를 받았습니다.", this.name, this.damage);
Console.WriteLine("사서 현재 체력: {0}", this.hp);
}
public void Die()
{
Console.WriteLine("사서가 죽었습니다.");
}
}
public class App{
public App()
{
Console.WriteLine("App생성자");
Tomerry tomerry = new Tomerry();
tomerry.name = "토머리";
tomerry.hp = 300;
Librarian librarian = new Librarian();
librarian.name = "로라";
librarian.hp = 50;
tomerry.Attack(librarian);
Console.WriteLine("=================");
librarian.Attack(tomerry);
}
}
get,set 접근자
class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass();
Console.WriteLine("mc.Name: {0}", mc.Name);
mc.Name = "홍길동";
Console.WriteLine("mc.Name: {0}", mc.Name);
}
}
public class MyClass
{
private string name = "John";
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public MyClass()
{
}
}
public class MyClass
{
private string name = "John";
public string Name
{
get
{
return name;
}
set
{
if (value.Length < 5)
name = value;
}
}
public MyClass()
{
}
}
structure 구조체
struct Program
{
struct Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
static void Main(string[] args)
{
Point point1;
point1.x = 20;
point1.y = 30;
Console.WriteLine("point1: x={0}, y={1}", point1.x, point1.y);
}
}
인터페이스 내부에서 인터페이스를 상속하기
namespace ConsoleApp4
{
interface ParentInterface
{
void myMethod(string str);
}
interface SubInterface : ParentInterface
{
void myMethod(string str, int i);
}
class MyClass : SubInterface
{
public void myMethod(string str)
{
Console.WriteLine(str + " ParentInterface.myMethod() call!");
}
public void myMethod(string str, int count)
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(str + " SubInterface.myMethod() " + i + " call!");
}
}
}
class Program
{
static void Main(string[] args)
{
MyClass sif = new MyClass();
sif.myMethod("Interface");
sif.myMethod("Inherits", 4);
}
}
}
인벤토리에 아이템 집어넣기
public class Inventory
{
public Inventory(string itemNames)
{
List<string> inventory;
inventory = new List<string>();
inventory.Add(itemNames);
Console.WriteLine("Count: {0}", inventory.Count);
foreach (string name in inventory)
{
Console.WriteLine(name);
}
}
}
class Program
{
static void Main(string[] args)
{
new Inventory("이루실의 직검");
new Inventory("빛의 탈리스만");
}
}
public class Inventory
{
public List<string> inventory= new List<string>();
public Inventory()
{
}
public void inputItem(string itemName)
{
this.inventory.Add(itemName);
}
}
class Program
{
static void Main(string[] args)
{
Inventory inventory = new Inventory();
inventory.inputItem("이루실의 직검");
inventory.inputItem("빛의 탈리스만");
Console.WriteLine("Count: {0}", inventory.inventory.Count);
foreach (string name in inventory.inventory)
{
Console.WriteLine(name);
}
}
}
'C# > 수업내용' 카테고리의 다른 글
0323 익명 함수 (0) | 2021.03.23 |
---|---|
0322 대리자 delegate★★ (0) | 2021.03.22 |
0319 확장 메서드 extension method (0) | 2021.03.19 |
0319 Partial Class 분할 클래스 (0) | 2021.03.19 |
0319 2차원 배열 복습 (0) | 2021.03.19 |