[초보자를 위한 C# 200제]


[Day 001]


Console.ReadLine()         키보드로 문자열을 입력받는다.

int.Parse()                     숫자타입 문자열을 int 타입 문자열로 변환한다.


Console.WriteLine("{0} + {1} = {2}", num1, num2, num1 + num2)


- 결과




- 메소드란?

필드가 물체의 상태라면, 물체의 행동에 해당하는게 메소드다.

      • 메소드는 입력값이 있고, 그 입력값을 받아서 무언가 한 다음 결과를 도출해 내는 수학의 함수와 비슷한 개념이다.

      • 이때 입력값을 매개변수라고 하고,결과값을 리턴값이라고 합니다.

        • 인자( Argument ) 는 어떤 함수를 호출시에 전달되는 값을 의미한다.

        • 매개 변수( Parameter ) 는 그 전달된 인자를 받아들이는 변수를 의미한다.

      • 메소드란 클래스가 가지고 있는 기능이다. 클래스 안에 선언됩니다.



- 메소드와 평션은 어떻게 다른가? (출처 : https://blog.naver.com/cdincdin/30129625682)




- public static void main(String[] args) 란? (출처 : https://blog.naver.com/yub91/140131895088)


static

" 프로그램이 시작하면서 따로 인스턴스 하지 않아도 프로그램의 시작과 동시에 static으로 선언된 것들은 메모리에 호출이 되어 지는데, 이렇게 호출된 것들은 다른 녀석들과는 다르게 프로그램이 종료되는 시점까지 계속 유지가 된다는 점이다.

다른 클래스, 메소드, 변수 등의 경우 Java Virtual Machine의 Garbage Collector에 의해 인스턴스화 되어 사용이 되어진다 하더라도, 일정 용도를 끝 마친 후에는 다시 메모리에서 삭제가 되거나, 다른 부분에서 참조가 되지 않는 부분 등이 있는데, static으로 선언된 것은 끝까지 살아남아 계속 참조를 할 수 있다 "


void

" 메소드에 return 값이 없다는 뜻이다. main에서 void를 사용 하는 것은 main 자체가 하나의 프로그램의 시작과 끝인데, 프로그램 자체가 종료가 되는 시점에서 어떤 특정 값이 반환된다 한들 그 값이 의미를 가질리도 없고, 의미를 가져서도 안 된다.

어떤 계산에 의한 값의 반환이 있다면 그건 어디까지나 프로그램이 종료 되기 전에 이루어져야 하고 그 반환된 값 역시 프로그램이 종료되기 전 사용이 되어야 정상적인 것이므로 프로그램의 시작과 끝이 함께하는 main 메소드에는 반환값이 없는 void가 필요하다. "


String[] args

" String은 우리가 흔히 사용하는 그 String과 같은 녀석으로 []를 통해 배열로 생성이 된다는 의미이다. args의 경우 일반적으로 이렇게 사용할 뿐 원한다면 그 이름은 얼마든지 다른 것들로 대체할 수 있다. String[] aabb 역시 성립한다는 의미이다. 또한 배열의 특징상 String args[] 역시 사용 가능하다.

이 명령어는 맨 처음 프로그램을 실행하는 데 있어 외부에서 값을 받아오기 위해서 사용하는 것인데,

예를 들어 Example01.class라는 이름으로 클래스를 생성하고 실행한다면, java Example01.class 라는 명령어를 통해 실행이 되는데, java Example01.class 100 200 이런 식으로 맨 처음 프로그램을 실행하는 순간 특정한 값을 입력하고자 할 경우 그렇게 입력한 100 200이 String 타입의 배열 args[0], args[1]에 저장이 되어 프로그램 안에서 사용할 수 있다는 것이다.

이렇게 사용하는 것을 매개변수라고 하는데, main에서 String[] args라고 선언을 하는 이유는 프로그램의 실행 순간 외부값을 가져와서 프로그램 안에 사용하고자 할 때 메모리에 저장할 공간을 미리 선언해 두는 것이라고 할 수 있다. "


public protected private (default)

" public은 어디서나 상속 및 참조가 가능하다는 의미이다.

protected는 같은 패키지의 내부 혹은 이 클래스를 상속한 클래스에서만 접근을 허용한다는 의미이다..

private는 오직 이 클래스를 포함하고 있는 클래스 내부에서만 상속 및 참조를 허용한다는 의미이다.

(default)는 같은 패키지 내에서만 상속 및 참조가 가능하다는 의미이다. "




- 클래스 메소드 필드 에 대한 접근 제어자에 대한 이해 (출처 : https://blog.naver.com/yub91/140131895088)

 

[ 클래스 ]


□ abstract : 클래스의 정의된 메소드 중에서 구현을 생략하고 이름만 정의된 것이 존재할 수 있는데(이러한 메소드를 정의할 때에는 앞에 abstract라는 접근제어자를 붙여야 한다. ) 이런 abstract 메소드를 하나라도 가지고 있는 클래스를 정의할 때에는 반드시 abstract 클래스로 하여야 한다. abstract 클래스는 아직 구현되지 않은 메소드를 포함하고 있기 때문에 객체를 생성시킬 수 없으며 상속만 가능하다.

 

□ final : 더 이상 상속이 불가능하도록 만든다. 따라서 abstract와 같이 사용될 수 없다.


[ 메서드 ]


□ abstract : 몸체의 구현 없이 선언된 메소드에 붙는다. , 접근 제어자, 반환형 및 명칭부만 명시한 메소드이다. 메소드의 명치부란 메소드의 이름과 매개변수 리스트를 말한다. 내부 메소드 중 하나가 abstract 메소드이면 그 메소드를 포함하는 클래스는 abstract 클래스 이어야 한다. abstract 메소드는 서브 클래스에 상속될 때 반드시 구현되어야 한다.

 

□ final : 한 번 구현되면 상속은 가능하지만 서브 클래스에서 오버라이딩이 불가능한 메소드가 된다. 따라서 abstract와 함께 사용될 수 없다.

 

□ synchronized : 멀티 스레딩에서 동기화해야 할 메소드를 표시한다. 한 프로그램에서  동시에 실행될 수 있는 메소드가 서로 동기화되어 있으면 하나의 메소드가 실행되고 있는 동안에는 다른 메소드는 실행 될 수 없다.

 

[ 필드 ]

 

□ protected : 선언된 클래스 내부, 같은 패키지 내부, 같은 소스 파일 내부, 선언된 클래스를 상속하는 서브 클래스에서 참조가 가능하다.

 

□ static : static으로 선언된 필드는 해당 클래스로부터 여러 개의 객체가 생성되더라도 오직 하나만 존재하며 여러 객체가 공유하여 사용한다. 클래스 A로부터 A1,A2,A3를 생성하더라도 모두 static으로 선언된 변수a는 모두 하나의 값을 나타낸다. static 필드는 서브 클래스로 상속된다.

 

□ final : 초기화가 끝나면 더 이상 값을 변경할 수 없도록 한다. 일반적으로 상수로 사용하고 싶은 필드에 적용시킨다.

 

 생략 : 접근 제어자를 생략하면 선언된 클래스 내부 또는 같은 패키지 내부에서 참조 가능하다.

 

[ 생성자 ]

 

□ public : 어느 곳에서든지 호출이 가능하다.

 

□ private : 클래스 내부에서만 호출이 가능하고 다른 곳에서는 호출이 불가능 하다. private 생성자의 경우 외부에서 호출이 불가능하기 때문에 특별한 경우에만 사용한다.

 

□ protected : 같은 패키지 내부, 선언된 클래스 내부, 서브 클래스에서만 호출이 가능하다.


- 자바 VS C# : 강력함과 다재다능함의 대결 (출처 http://corealight.tistory.com/63)


요약

두 언어가 공통점이 많고 서로 장단점을 가지고 있다.


결론

둘 다 공부하자.




[Day 002]



[Day 003]

Clear 및 Calculate 함수 작성.


[Day 004]

공백 입력 및 String 입력시 예외 처리


[Day 005]

사칙연산 계산기 만들기



[Day 006] 

변수의 값이 바뀌지 않게 하려면 Const 키워드를 붙여 상수로 만들면 된다.


[Day 007]

Console.WriteLine() 과 Console.ReadLine()


[Day 008 - Day 012]

딱히 별 것 없음.




오늘은 C# 프로그래밍 체험하기 파트를 다 해봄.


아직 극초반이긴 하지만,

간단한 소감을 말하자면 이 책은


"개 불친절하다"

C# 프로그래밍 시작을 위한 입문서!! 라고 표지에 적혀있지만,

IDE 에 대한 기본 지식이 없거나 경험이 없으면 꽤나 헤맬법함.

Unity 에서만 해봤지 Visual Studio 에서 직접 코딩을 하는 경험이 전무한 나로서는 굉장히 많이 헤매게 됨..


각 섹션에 대한 진행 역시

목표를 설정하고, 차근차근 해설하며, 한줄씩 설명하는게 아니라

방법이 죽 나오고, 코드가 주루룩 적혀있고, 주석은 따로 주루룩 적혀있는 형식이다.


일일이 찾아가며 맞춰보기도 힘들고, 논리를 전개해나가는 방식 또한 알기 힘듦.


너무 개초보의 무지함을 얕잡아본게 아닌가 싶으다.

나의 무지함은 바다보다 깊거늘..


일단 끝까지 한번 해보는걸로..

'Study > Programming' 카테고리의 다른 글

[C# 200제] Day - 5  (0) 2018.01.04
[C# 200제] Day - 4  (0) 2018.01.03
[C# 200제] Day - 3  (2) 2018.01.02
[C# 200제] Day - 2  (0) 2018.01.01
[C# 200제] Day - 1  (0) 2017.12.31

+ Recent posts