1 / 45

C# 스터디 -2

C# 스터디 -2. UPnL 장준영. 다음주 에 만들 것. 재미있고 간단한 총게임 ?. 다음주 에 만들 것. ( 사실 오늘 하려고 했는데 완성을 못함ㅠ . ㅠ ). 오늘 배울 것. 객체지향 프로그래밍 (OOP) 클래스 (class) 속성 / 메서드. 객체지향 프로그래밍. OOP. 객체지향 프로그래밍. 객체 들의 모임으로 해석하는 프로그래밍 방식 일종의 철학 ?. 객체. 속성과 메서드 ( 행동 ) 가 있는 것 객체가 정확히 뭐다 ! 라는 설명보다는 예 시를 드는 것이 더 빠름. 객체.

clark
Download Presentation

C# 스터디 -2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C# 스터디-2 UPnL장준영

  2. 다음주에만들 것 • 재미있고 간단한 총게임?

  3. 다음주에만들 것 • (사실 오늘 하려고 했는데 완성을 못함ㅠ.ㅠ)

  4. 오늘 배울 것 • 객체지향 프로그래밍(OOP) • 클래스(class) • 속성/메서드

  5. 객체지향 프로그래밍 OOP

  6. 객체지향 프로그래밍 • 객체들의 모임으로 해석하는 프로그래밍 방식 • 일종의 철학?

  7. 객체 • 속성과 메서드(행동)가 있는 것 • 객체가 정확히 뭐다! 라는 설명보다는예시를 드는 것이 더 빠름.

  8. 객체 • 사람 • 키, 몸무게, 나이와 같은 속성 • 걷는다,먹는다와 같은 메서드

  9. 클래스(class) • 사람은 어떤어떤 속성과 메서드를 가지고 있다. • 객체를 정의!

  10. 인스턴스 • 사람이 뭐다를class로 나타낸다면, 사람 하나하나를 실제로 만든 것 • Person ybbarng = new Person(“방용배”); ->방용배라는인스턴스를 만듦

  11. 인스턴스 • Person algy = new Person(“알게이”); • Person doju = new Person(“임동재”); • Person hoki = new Person(“황호기”);

  12. 속성 ~의 • 용배의 키 -> ybbarng.Height; • 용배의 나이 -> ybbarng.Age;

  13. 속성 • 속성은 변수처럼 대입할 수 있다. • 용배의 키가 182이다. -> ybbarng.Height = 182; • 용배가 2살 어려졌다 -> ybbarng.Age -= 2;

  14. 메서드 • 용배가 걷는다 -> ybbarng.walk(); • 용배가 먹는다 -> ybbarng.eat(고기);

  15. 갤러그를 객체지향적으로 프로그래밍 한다면?

  16. 클래스 class Shuttle { }

  17. 클래스 • 클래스는 다른 파일에 저장하는 경우가 많음. • 찾아보기 쉬우니까!

  18. 클래스 • Person 클래스를 만들어봅시다.

  19. 클래스 namespace ~~ { class Person { } } // 와 다 만들었다!

  20. 속성 • 변수 선언하듯이 선언 • 일단 public을 앞에 붙여보자. • public string name; // 이름 • public int age; // 나이 • public int height; // 키

  21. 속성 사실 얘들은 속성이 아니라 필드라고 부릅니다. 속성은 따로 있는데 필드처럼 보이게 합니다. 하지만 일단 필드를 속성이라고 알아둡시다.

  22. 메서드 • 인자가 없는 것 public void walk() { Console.WriteLine(“걷는다”); }

  23. 메서드 • 메서드 내에서 자기 자신의 속성에 접근 가능 public void walk() { Console.WriteLine(name + “이(가) 걷는다”); }

  24. 메서드 • 인자가 있는 것 public void eat(string food) { Console.WriteLine(food + “을(를)먹는다”); } // 나중에 ybbarng.eat(“고기”); 라고 실행하면 // 고기을(를)먹는다가 출력됨.

  25. 메서드 • 함수처럼 리턴값이 있을 수도 있다. • 다음의 함수를 생각해봅시다. • f(x) = x^2 + x • f(10) = 100 + 10 = 110

  26. 메서드 • 사람이 매년 3cm씩 큰다고 할 때, n년 후의 키를 반환 public int f(int n) { return height + 3 * n; }

  27. 여기까지 • 코드

  28. Program.cs로 돌아가서 Main에 입력하세요

  29. 인스턴스 만들기 • Person ybbarng = new Person();

  30. 속성 건드리기 • ybbarng.name = "방용배"; • ybbarng.age= 30; • ybbarng.height= 182;

  31. 메서드 실행 • ybbarng.walk(); • ybbarng.eat(“고기”); • int result = ybbarng.f(10); • Console.WriteLine(result);

  32. 생성자 Person ybbarng = new Person(); ybbarng.name = "방용배"; ybbarng.age= 30; ybbarng.height= 182; • 요 네줄을 한 줄로 줄여줌.

  33. 생성자 • Person.cs에다가 다음을 추가 public Person(string name_, int height_, int age_) { name = name_; height = height_; age = age_; }

  34. 생성자 • Program.cs의 Main함수에서 다음과 같이 쓴다. Person ybbarng = new Person(“방용배”, 30, 182);

  35. 생성자 • 이렇게 해놓으면 쉽게 다른 사람의 인스턴스도 만들 수 있다. Person gaenari = new Person(“손도현”, 31, 183); Person nhne = new Person(“김도영”, 31, 170);

  36. 제한자 • public은 뭘까요?

  37. 제한자 • Person.cs에서 • public int height를 • private int height로 바꿔봅시다.

  38. 제한자 • Program.cs의 Main에서 • Console.WriteLine(ybbarng.name); • Console.WriteLine(ybbarng.age); • 는 되는데 • Console.WriteLine(ybbarng.name); • 은 안됨

  39. 제한자 • 왜 쓰는지 모르겠다면 그냥 다 public으로 하세요. • (나쁜 조언이지만 어쩔 수 없음…)

  40. 정적 속성/메서드 • static! • static void Main(string[] args)에도 있음.

  41. 정적 속성/메서드 • public static int total; • 얘는 ybbarng.total같은 식으로 접근하는게 아니고 • Person.total로 합니다.

  42. 정적 속성/메서드 • public static int total; • 전체 사람 수 같은 건 각각의 개인이 가지는 속성이 아니라 Person이라는 전체 클래스가 가지는 것이다!

  43. 정적 속성/메서드 public static void born() { total++; } • 메서드도 마찬가지 • 정적 메서드에서는 정적 속성만 건드릴 수 있다.

  44. 오늘 할 것 • Person 클래스에 원하는 속성/메서드를 하나씩 추가하세요. • 속성: 몸무게, 성별, 별명 등등 • 메서드: 잔다, 뛴다 등등

More Related