c# 스터디 -2
DESCRIPTION
C# 스터디 -2. UPnL 장준영. 다음주 에 만들 것. 재미있고 간단한 총게임 ?. 다음주 에 만들 것. ( 사실 오늘 하려고 했는데 완성을 못함ㅠ . ㅠ ). 오늘 배울 것. 객체지향 프로그래밍 (OOP) 클래스 (class) 속성 / 메서드. 객체지향 프로그래밍. OOP. 객체지향 프로그래밍. 객체 들의 모임으로 해석하는 프로그래밍 방식 일종의 철학 ?. 객체. 속성과 메서드 ( 행동 ) 가 있는 것 객체가 정확히 뭐다 ! 라는 설명보다는 예 시를 드는 것이 더 빠름. 객체. - PowerPoint PPT PresentationTRANSCRIPT
1
C# 스터디 -2UPnL 장준영
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
20
클래스namespace ~~{
class Person{}
}// 와 다 만들었다 !
21
속성 변수 선언하듯이 선언 일단 public 을 앞에 붙여보자 .
public string name; // 이름 public int age; // 나이 public int height; // 키
22
속성사실 얘들은 속성이 아니라 필드라고 부릅니다 .
속성은 따로 있는데 필드처럼 보이게 합니다 .
하지만 일단 필드를 속성이라고 알아둡시다 .
23
메서드 인자가 없는 것public void walk(){
Console.WriteLine(“ 걷는다” );}
24
메서드 메서드 내에서 자기 자신의 속성에 접근 가능public void walk(){
Console.WriteLine(name + “ 이 ( 가 ) 걷는다” );}
25
메서드 인자가 있는 것public void eat(string food){Console.WriteLine(food + “ 을 ( 를 ) 먹는다” );}
// 나중에 ybbarng.eat(“ 고기” ); 라고 실행하면// 고기을 ( 를 ) 먹는다가 출력됨 .
26
메서드 함수처럼 리턴값이 있을 수도 있다 . 다음의 함수를 생각해봅시다 .
f(x) = x^2 + x
f(10) = 100 + 10 = 110
27
메서드 사람이 매년 3cm 씩 큰다고 할 때 , n 년 후의 키를 반환public int f(int n){
return height + 3 * n;}
28
여기까지코드
29
Program.cs 로 돌아가서Main 에 입력하세요
30
인스턴스 만들기Person ybbarng = new Person();
31
속성 건드리기 ybbarng.name = " 방용배 "; ybbarng.age = 30; ybbarng.height = 182;
32
메서드 실행 ybbarng.walk(); ybbarng.eat(“ 고기” );
int result = ybbarng.f(10);Console.WriteLine(result);
33
생성자Person ybbarng = new Person();ybbarng.name = " 방용배 ";ybbarng.age = 30;ybbarng.height = 182;
요 네줄을 한 줄로 줄여줌 .
34
생성자 Person.cs 에다가 다음을 추가public Person(string name_, int height_, int age_){name = name_;height = height_;age = age_;}
35
생성자 Program.cs 의 Main 함수에서 다음과 같이 쓴다 .
Person ybbarng = new Person(“ 방용배” , 30, 182);
36
생성자 이렇게 해놓으면 쉽게 다른 사람의 인스턴스도 만들 수 있다 .
Person gaenari = new Person(“ 손도현” , 31, 183);Person nhne = new Person(“ 김도영” , 31, 170);
37
제한자 public 은 뭘까요 ?
38
제한자 Person.cs 에서 public int height 를 private int height 로 바꿔봅시다 .
39
제한자 Program.cs 의 Main 에서 Console.WriteLine(ybbarng.name); Console.WriteLine(ybbarng.age); 는 되는데 Console.WriteLine(ybbarng.name); 은 안됨
40
제한자왜 쓰는지 모르겠다면 그냥 다 public으로 하세요 .
( 나쁜 조언이지만 어쩔 수 없음… )
41
정적 속성 / 메서드 static!
static void Main(string[] args) 에도 있음 .
42
정적 속성 / 메서드 public static int total;
얘는 ybbarng.total 같은 식으로 접근하는게 아니고Person.total 로 합니다 .
43
정적 속성 / 메서드 public static int total;
전체 사람 수 같은 건 각각의 개인이 가지는 속성이 아니라 Person 이라는 전체 클래스가 가지는 것이다 !
44
정적 속성 / 메서드 public static void born(){total++;}
메서드도 마찬가지 정적 메서드에서는 정적 속성만 건드릴 수 있다 .
45
오늘 할 것Person 클래스에 원하는 속성 / 메서드를 하나씩 추가하세요 .
속성 : 몸무게 , 성별 , 별명 등등메서드 : 잔다 , 뛴다 등등