저번 시간에는 조건문, 반복문을 통해 나이 구별이나 어떤 과일을 좋아하는지 찾아보는 코드를 작성해 보았습니다. 이번에는 이러한 코드의 데이터를 어디서 받는지, 이 모든 걸 통틀어 클래스라는 함수가 무엇인지 오늘 한번 알아볼까요?
[C#] 조건문, 반복문 알아보자
저번시간에는 C#의 연산자에 대해서 알아보고 Visual Studio를 이용해서 코드 문제를 풀어보았습니다. 이번에는 조건문과 반복문을 알아보는 시간을 갖아보도록 하겠습니다.[C#] 연산자에 대해 알아
tangent0426.tistory.com
클래스(Class) 개요
클래스를 알기 전엔 우선 객체와 객체지향 프로그래밍부터 알 필요가 있습니다.
객체지향 프로그래밍 Object Oriented Programing

객체지향 프로그래밍(Object Oriented Programing)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.(이 모든 것은 객체로 이루여져 있죠)
객체 Object

객체는 위의사진과 아래의 리스트처럼 클래스의 인스턴스나 배열을 말한다고 정의할 수 있습니다.
- 클래스에서 정의한 것을 토대로 메모리에 할당된 것
- 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간
- 변수, 자료구조, 함수, 메서드가 될 수 있음
- 다른 표현으로 인스턴스(instance)라고도 함
클래스 Class


클래스는 객체를 만들기 위한 설계도이며 객체들이 공통적으로 갖는 속성들을 모아서 정의를 내린 것이라고 봐도 무방합니다.

인스턴스로는 클래스로부터 만들어진 객체며, 인스턴스화는 클래스로부터 객체를 만드는 과정이라고 할 수 있습니다.
구조


이러한 클래스의 구조로는 3가지로 나누어지는데 위의 사진처럼 클래스의 이름을 나타내는 것을 시작으로 Field(상태를 정의), Method(동작을 정의)로 나누어집니다.

사용자 정의 자료형인 클래스로 나타내는 인스턴스는 클래스를 변수로 선언한 객체이며, 키워드로 나타내는 생성자는 클래스의 이름과 같은 메서드(클래스 이름 뒤에 괄호가 붙은 것)라고 보시면 됩니다.
클래스 이름은 대문자로 시작하는 것이 관례이니 숙지하시기 바랍니다.
생성자, 소멸자,접근 제한자?
생성자(Constructor)

생성자는 객체가 생성될 때 호출되는 인스턴스 초기화 메서드로 클래스와 같은 이름으로 지정하며 Public으로 정의되어야 합니다. return 형식의 반환 형을 사용할 수 없으며, void를 붙이지 않는 형태로 나타냅니다.

생성자 함수로는 객체로 정의될 때 자동으로 실행되는 함수이며, 클래스가 인스턴스화 되었을 때 함수가 자동적으로 실행된다.
소멸자(Destructor)

소멸자는 클래스의 이름과 동일하며, 메서드 이름 앞에 물결표(~)가 존재하는 특수한 메써드입닏. 자세한 내용은 아래의 리스트를 보시면 됩니다.
- 클래스의 객체가 소멸될 때 실행됨
- 매개변수와 접근 제한자를 가질 수 없음
- 각 클래스는 여러 개의 소멸자를 가질 수 없음
- 오버로드 되거나 상속될 수 없음
- 이름은 항상 클래스와 동일하며 반환 타입이 없음
- Finalize 메서드를 사용함
- 객체가 더 이상 필요하지 않을 때 가비지 컬렉터에 의해 호출됨

추가로 소멸자에 대해 얘기하면 프로그램 실행이 끝나경우 프로그램과 관련된 모든 객체는 가비지 컬렉터에 의해 파괴됩니다. 또한 가비지 컬렉터의 암시적 호출은 메모리가 가득 찬 경우 프로그램 실행 중 발생하며, 프로그램에서 사용되지 않는 객체를 식별하고 제거합니다.
가비지 컬렉터의 명시적 호출은 GC, clooect()를 사용하여 프로그램 실행 도중에 실행될 수 있습니다.
- 추가로 NET 5(. NET Core 포함) 이상 버전인 경우 애플리케이션이 종료될 때 소멸자를 호출하지 않음
- 콘솔 창에서 소멸자가 호출되었는지 확인할 수 없음
- 소멸자를 강제로 실행하기 위해서는 GC.Collect()를 호출
접근 제한자(Access Modifier)

접근제한자 같은 경우엔 클래스 내에 멤버(필드, 메서드, 속성, 이벤트 등)에게 접근하는 것을 제한하는 역할로 아래의 표로 설명드리자면
접근 제한자 | 설명 |
Public | 클래스의 외부에서도 접근 가능 |
Protected | 상속받은 자식 클래스에게만 접근 가능 |
private | 클래스의 내부에서만 사용 |
Internal | 같은 어셈블리에서만 public으로 접근이 가능 |
protected internal | 같은 어셈블리에서만 protected으로 접근이 가능 |
기존 클래스 사용
Random 클래스

기존 클래스를 사용하기 전에 Random 클래스에 대해 알아보자면 Random 클래스는 임의의 숫자를 생성할 때 사용하며 암호화, 게임, 회원가입 등에서 많이 사용합니다.

메서드 | 설명 |
Next() | 임의의 정수를 생성할 때 사용 |
NextDouble() | 임의의 실수를 생성할 때 사용 |
random.Next(10)
random.Next(10, 100)
random.NextDouble( )
인스턴스. 인스턴스 멤버( )
List 클래스

리스트 클래스는 크기가 가변적인 배열을 만들 수 있으며 1개를 넣고 싶을 때는 1개를 넣으면 되고, 3개를 넣고 싶을 때는 3개를 넣으면 됩니다.
제네릭(Generic) : 클래스를 선언할 때 어떤 자료형인지 알려주며 클래스 이름 뒤에 <와 > 괄호로 감싸서 적용합니다.
메서드 | 설명 |
Add() | 리스트에 요소 추가 |
Remove() | 리스트에서 요소 제거 |
Remove(object element) | 특정 요소를 리스트에서 제거(객체 지정) |
RemoveAt(int index) | 특정 위치에 있는 요소를 리스트에서 제거(인덱스를 지정) |
Math 클래스

Math 클래스는 수학과 관련된 변수 또는 메서드를 제공합니다. 인스턴스를 만들지 않고 사용하며, 클래스 이름뒤에. 기호를 찍고 멤버를 사용합니다.
메서드 | 설명 |
Abs(숫자) | 절대 값을 구함 |
Ceiling(숫자) | 지정된 숫자보다 크거나 같은 최소 정수를 구함 |
Floor(숫자) | 지정된 숫자보다 작거나 같은 최대 정수를 구함 |
Max(숫자, 숫자) | 두 개의 매개변수 중에서 큰 값을 구함 |
Min(숫자, 숫자) | 두 개의 매개변수 중에 작은 값을 구함 |
Round(숫자) | 반올림함 |
클래스 생성, 클래스 변수, 추상화


인스턴스 변수(클래스 변수 포함)

인스턴스 변수는 클래스 변수와 인스턴스 변수로 나누어지는데 [인스턴스]. [변수 이름] 수식과 인스턴스 변수는 여러 개로 만들어도 되면 소문자로 시작한다는 규칙을 사용하고 있습니다.
[접근 제한자] [자료형] [이름]

클래스 변수

[접근 제한자] static [자료형] [이름]
추상화

추상은 사물이나 표상을 어떤 성질, 공통성 등 본질에 착안하여 그것을 추출하여 파악하는 것을 말합니다.
여기서 C#에서의 추상화는 총 4가지로 나누어지는데 클래스(Abstraction), abstract 키워드, 추상 클래스, 추상 메서드로 나누어집니다.
클래스(Abstraction) |
특수 세부 정보를 숨기고 사용자에게 필수 정보만 표시하는 것, 추상 클래스나 인터페이스로 달성 가능
|
abstract 키워드 |
클래스와 메소드에 사용되는 비 접근 한정자
|
추상 클래스 |
객체를 만드는 데 사용할 수 없는 제한된 클래스로 접근하려면 다른 클래스에서 상속 되어야 함
|
추상 메서드 |
추상 클래스에서만 사용 가능하며 본문이 없음 추상 클래스로 객체 생성 불가능 함
|
이것으로 클래스에 대해서 간단하게 설명드렸습니다. 다음시간에는 메서드에 대해서 설명해 보겠습니다.
읽어주셔서 감사합니다.^^

'C# > C# 코딩' 카테고리의 다른 글
[C#] 클래스에 대해 더 깊게 알아보자 (4) | 2024.08.28 |
---|---|
[C#] 메서드에 대해 알아보자 (1) | 2024.08.20 |
[C#] 조건문, 반복문 알아보자 (0) | 2024.08.14 |
[C#] 연산자에 대해 알아보자 (0) | 2024.08.13 |
[C#] 어휘구조와 자료형에 대해 알아보자 (0) | 2024.08.12 |