C#/클래스와 객체지향

상속을 사용해 클래스 구현 부분의 코드 중복을 해결했습니다. 이제 Main() 메서드를 살펴보면 여기에도 코드가 중복되는 것을 볼 수 있습니다.class Animal{ public int Age { get; set; } public Animal() { this.Age = 0; } public void Eat(); { Console.WriteLine("먹습니다"); } public void Sleep(); { Console.WriteLine("잡니다"); }}class Dog : Animal // Animal 클래스의 상속을 받습니다.{ public stirng Color { get; set; } public void Bark() { Console.Wr..
클래스 기반의 클래스 지향 언어에서 가장 중요한 특징은 바로 상속(Inheritance)과 다형성(Polymorphism)입니다. 만약 Dog() 클래스와 Cat() 클래스를 만든다고 생각해봅시다.class Dog{ public int Age { get; set; } public string Color { get; set; } public Dog() { this.Age = 0; } public void Eat(); { Console.WriteLine("먹습니다"); } public void Sleep(); { Console.WriteLine("잡니다"); } public void Bark(); { Console.WriteLine("짖습니다"); }}class Cat..
C#의 모든 자료형은 값(value) / 참조(reference) 두 가지로 나눌 수 있습니다. 지금까지 배워왔다너 int / float 등 기본 자료형은 값(value) 이고, 클래스로 만들어진 인스턴스(객체)는 참조(reference) 입니다. 다음 코드로 자세하게 살펴보겠습니다.static void Main(string[] args){ int a = 10; Random ran = new Random();} a는 선언과 동시에 메모리라는 영역에 4바이트의 영역을 잡고 값이 들어갑니다. 객체를 선언한 ran은 new Ranom()으로 인스턴스를 생성했기 때문에 힙(Heap) 이라는 영역에 위치를 잡습니다.그리고 그 주소값이 ran에 들어가게 됩니다.결국 변수 ran 은 객체의 값이 들..
속성에 대해 얘기하기전에 속성이 필요한 이유에 대해서 알아보겠습니다. 예를들어 너비(width), 높이(height) 그리고 사각형의 넓이를 구하는 Area() 메서드까지 가지고 있는 Box() 클래스가 있다고 가정해봅시다.분명 코드상에는 문제가 없다고 생각했지만 너비와 높이를 음수로 입력하는 기이한 상황이 발생했더니 음수의 결과값이 나오는 현상이 발생했습니다. 이러한 상황을 미연에 방지하기 위해 클래스를 만들 때 일어날 상황을 원천적으로 봉쇄하는 것이 필요합니다.다양한 방법이 있지만 하나씩 알아보겠습니다.   [캡슐화] class Box{ private int width; private int height; public Box(int width, int height) { ..
생성자(Constructor)는 무언가 생성할 때 자동으로 호출되는 메서드입니다.생성자의 종류는 많지만 우선 인스턴스 생성자에 대해서 알아보겠습니다. 인스턴스 생성자는 인스턴스를 생성할 때 자동으로 호출되는 메서드로 다음과 같은 조건이 있습니다.이름은 클래스 이름과 같아야 합니다.접근 제한자는 public 이어야 합니다.반화과 관련된 선언을 하지 않아야 합니다.다음과 같은 형태가 됩니다.public [클래스 이름] ([매개변수]){} 생성자는 일반적으로 인스턴스 변수를 초기화하는 일을 합니다.간단한 예제를 살펴보겠습니다. class Program{ class Product { public static int counter = 0; public int id; ..
C#은 접근 제한자가 굉장히 많습니다. 일단 대표적인 접근자에 대해서만 알아보겠습니다.privatepublic [private 접근 제한자]우선 private 접근 제한자에 대해 알아보겠습니다. 접근 제한자를 입력하지 않았을 경우 자동으로 private 접근 제한자가 설정됩니다.static void Main(string[] args){} Main 함수는 접근 제한자를 설정하지 않았으므로 private 접근 제한자가 설정된 메서드입니다. private 접근 제한자가 설정된 메서드를 외부나 내부 클래스에서 접근하는 예제를 살펴보겠습니다. class Test_out{ // Program.Main 은 private 이기 때문에 Program 클래스 외부에서는 접근할 수 없습니다. // 따라서 이 코드..
오버로딩이란 이름은 같고, 매개변수는 다른 메서드를 만드는 것은 오버로딩(Overloading) 이라고 부릅니다. 오버로딩은 말 그대로 이름은 같고 매개변수가 다른 메서드를 만들기만 하면 되기 때문에 예제를 바로 살펴보겠습니다. class Program{ class MyMath { public static int Abs(int input) { if(input
메서드의 기본적인 형태에 대해 알아보겠습니다.[접근 제한자] [반환형] [메서드 이름] ([매개변수]){    [메서드 코드]} 메서드는 함수와 같다고 볼 수 있습니다. 다양한 예제들을 통해 메서드의 생성과 사용을 알아보겠습니다.class Program{ class Test { //Power 메서드는 매개변수로 들어온 int x 를 제곱하는 메서드 입니다. public int Power(int x) { return x * x; } } static void Main(string[] args) { // Power 메서드는 Test 클래스 내부에 생성되어 있기 때문에 인스턴스를 생성해야 합니다..
일반적으로 클래스 기반의 객체 지향 프로그래밍 언어는 다음 네 가지 특징이 있습니다. 이러한 특징들이 클래스를 사용하는 기본 이유 입니다.추상화캡슐화상속다형성이번에는 추상화에 대해 알아보겠습니다.학생으로 예를 들어보자면 다양한 속성을 뽑아낼 수 있습니다.학번, 이름, 생년원일, 학과, 학년 등등 이렇게 프로그램에서 사용될 핵심적인 부분을 추출하는 것을 추상화라고 부릅니다. 코드로 예시를 들어보겠습니다.class Student{ public string id; public string name; public int grade; public string major; public DateTime birthday;}
이전에는 C#에 기본으로 존재하는 클래스에 대해서 알아보았습니다. 이제부터 클래스를 직접 만들어보겠습니다.클래스 생성은 class 키워드를 사용합니다. class [클래스 이름]{} 클래스를 생성하는 방법에 대해 알아보겠습니다. using System;namespace ClassBasic{ // 하나의 파일에 여러 개의 클래스 생성 class FirstClass { } class SecondClass { } class Program { // 클래스 내부에 클래스 생성 class FirstClass_inClass { } class SecondClass_inClass ..
tita
'C#/클래스와 객체지향' 카테고리의 글 목록 (2 Page)