System.ObjectEquals값을 비교하여 Boolean 값을 반환하는 메서드. int A = 0; int B = 1; if(A.Equals(B)) True/False를 반환한다. Console.WriteLine("A = B"); 비교 대상이 값 형식인지, 아니면 참조형식인지에 따라 비교대상이 달라진다. 참조 형식 -> 할당된 메모리 위치를 가리키는 식별자 값 끼리 비교한다. ( C 에서 포인터주소와 비슷해 보인다 )값 형식 -> 해당 인스턴스의 값 끼리 비교한다. ( C 에서 변수 값의 비교와 비슷해 보인다 ) GetHashCode특정 인스턴스의 4 byte int 식별자를 가져오는 메서드. ( 주민등록번호, 식별자는 인스턴스가 할당된 메모리의 위치를 가리킨다 )GetHashCode와 Equals..
노트북, 데스크탑, 휴대폰에는 전원 켜기, 전원 종료, 리셋 등의 같은 역할을 하는 같은 기능이 공유되고 있다. 이는 모두 '컴퓨터'에서 파생되어 나온 기기이기 때문이다. 새로운 전자기기를 만드는 작업을 한다고 가정해보면, 개발자들은 컴퓨터에서 사용되어지던 기능들에 대한 정보를 그대로 가져오면서 거기에 덧붙여 기능을 확장시키는 작업을 한다. 여기서 컴퓨터의 기능을 새로운 전자기기로 가져오는 작업이 상속에 해당된다. 상속상위 클래스가 가지고 있는 특성을 하위 클래스에 물려주는 것.여러 클래스가 가진 공통적인 특징을 상위 클래스 하나에서 구현하여 하위 클래스에 상속시켜줌으로써 작업의 Cost를 줄일 수 있다. 여기에서 상위 클래스를 '부모 클래스'라 칭하고, 하위 클래스를 '자식 클래스' 라고 칭한다. 부모..
캡슐화 Encapsulation 관련성이 있는 데이터와 메서드를 한 곳으로 모으는 특성 -> 클래스 명으로 그 클래스가 제공하는 기능들을 대략적으로 알 수 있다. ( '빵집' 이라는 클래스에서 빵 이름에 대한 필드 / 제과제빵에 대한 메서드를 가져올 수 있다고 추측 가능! )내부 멤버 숨기기 -> 외부로 보여질 기능만 노출되게 설정 가능하다. 접근제한자private : 내부 클래스에서만 접근 가능하다.public : 내부, 파생, 외부 클래스 모두에서 접근 가능하다. 이 외에도 protected, internal 등의 접근제한자가 있지만, 아직은 이 둘만 알고 사용하여도 큰 문제가 없고, 대부분 두가지 접근 제한자만을 사용한다. 접근제한자를 명시해주지 않으면 class 내부의 멤버는 private으로 자..
클래스 Class 단순히 기본 자료형만으로는 모델링을 하기에 제약이 너무 크다. 따라서 원하는 객체의 타입을 새롭게 정의하여 사용할 수 있게 해주는 것이 클래스의 역할.클래스 내에서는 속성과 행위를 개발자가 정의하여 사용할 수 있다. 클래스로 타입이 정의되면 참조형으로 분류되기 때문에 메모리 할당이 필요하다. ( C에서의 malloc과 같은 작업이 필요 = new ) Book guliver = new Book("guliver"); Book : "Book"이라는 클래스를 자료형으로 가지는guliver : gulliver 라는 식별자를 가지도록 선언new Book : Book의 크기만큼 메모리를 할당("guliver") : 인자로 guliver를 전달해 Book에 값을 초기화 필드 Field클래스 정의에서 ..
객체지향 프로그래밍 Object-Oriented ProgrammingC#이 가지고 있는 특성이 객체지향이다. 그러나 이제껏 배웠던 C가 절차지향 언어이기에, 객체지향이라는 용어 자체가 낯설게 느껴졌다.객체지향이 어떤 특성을 가지고 있는지를 먼저 파악하고자 한다. 객체지향 프로그래밍이란?객체 단위로 쪼개진 프로그램이 객체끼리의 상호작용에 의해 작동된다.프로그램에 필요한 데이터들을 추상화하여 객체를 만들고, 객체 사이의 상호작용을 통해 프로그램을 작동시킨다. 여기서 객체는 structure 같은 데이터 묶음이 아닌, 데이터와 메서드가 하나의 역할에 대해 묶인 덩어리를 말한다. 객체지향은 말그대로 '성향'이나 '방법'을 말하는 것이기에, "어떤 언어는 객체지향 언어"라는 말은 옳지 않다. 그러나, 개념을 수용..