오늘의 내용은 해당 책을 인용하여 만듬
"C# 6.0 완벽가이드: 깊고 넓게 알려주는 레퍼런스 북", 조셉 앨버허리 및 밴 앨버허리 지음(O'Reilly), 류광 옮김, ⓒ 2016 인사이트, 978-89-626-195-6"
캡슐화
주변에 경계선을 만들어, 객체의 외부(공개) 행동과 내부(비공개) 구현 세부사항을 분리하는 것을 의미
상속
클래스 재사용을 의미함. 상위 클래스를 하위 클래스가 상속받으면 상위의 변수,메소드등을 그대로 물려받을 수 있다.
상속이 있기에 생산성이 높아지고, 유지보수 하기가 좋다
다형성
프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다.
예) 오버로딩, 오버라이딩, 함수형 인터페이스...
추상화
토끼, 고양이, 사자, 치타가 있을 때 이것들을 각각의 객체라 하며 이 객체들을 하나로 묶으려 할 때, 동물 또는 생물이라는 어떤 추상적인 객체로 크게 정의한다고 하자. 이때 동물 또는 생물이라고 묶는 것을 추상화라고 한다.
여기에서 탄생하는게 클래스이다
강한 형식 언어로도 불린다.
예를들어 정수를 받고록 설계된 함수를 부동소수점 수로 호출하는것이 불가능하다
강한형식 적용은 모래상자 안에서 실행하는 능력에도 중요하다.
모래상자 : 보안의 모든측면을 호스트가 제어하는 환경
프로그래머가 객체의 형식 규칙들을 우회해서 객체의 상태를 임의로 오염시키지 못하게 해야한다.
런타임에 의존해서 메모리를 자동으로 관리한다.
Common Language Runtime에는 프로그래머가 작성한 프로그램의 일부로서 실행되는 agrbage collector가 있다.
이 수거기로 인해, 더이상 참조되지 않는 객체들의 메모리를 재확보한다.
C++같은 언어에서 볼 수 있는 잘못된 포인터 관련 문제가 사라진다.
아예 C#에서 사용불가능한건 아니지만, 대부분의 프로그래밍 과제에서 포인터를 사용할 필요성을 제거시켰다.
다만 성능이 중요한 부분이나 상호운용성을 위해서는 포인터를 사용할 수 있다. 단! 명시적으로 unsafe로 표시한 블록 안에서만 허용된다.
가독성, 유지보수성
이미 작성한 코드에서 구현된 일련의 행위들을 변경없이, 코드의 가독성과 유지보수성을 높이기 위해 내부구조를 변경하는 것.
지속적으로 관리하기 편하게 소스코드를 재작성하는 것을 의미.
최적화와는 다른 문제이다.
협업
대부분의 경우 여러 사람과 함께 작업을 하게 된다. 그리고 새로운 사람이 내 프로젝트에 추가로 참여하게 되며, 인수인계가 불가능한 경우가 있기도 하다.
그때, 새로 시작하게 되는 사람이 이해할수 있는 코드를 작성하는것이 중요하다
using System;
class Test
{
static void Main()
{
Console.WriteLine(FeetToInches(30));
Console.WriteLine(FeetToInches(120));
}
static int FeetToInches(int feet)
{
int inches = feet * 12;
return inches;
}
}
와 같이, FeetToInches함수를 다른곳에서 불러서 사용한다.
문자열 검색 함수이다, bool값을 반환한다
string str = "100$";
string sub = "$";
bool exist = str.Contains(sub);
Console.WriteLine(exist); // True