C#/기초

C# - 개념 정리 3 / 메서드, 구조체, 객체, 클래스, 프로퍼티 / 면접 질문 대비

근본넘치는개발자 2024. 9. 24. 23:15

개념 정리 2에서 이어집니다.

2024.09.23 - [분류 전체보기] - C# - 개념 정리 2 / 변수, 배열, 컬렉션, 박싱 & 언박싱 / 면접 질문 대비


메서드 (Method)

특정 작업을 수행하기 위해 사용되는 독립적 기능 단위.

클래스나 구조체에서 객체의 동작 정의. 

 

메서드 역할 :

코드 재사용성 용이:

가독성 향상

모듈화 

추상화 

 

추상화는 객체지향 프로그래밍(Object-Oriented Programming, OOP)의

특징과도 이어지므로 아래 서술 

 

메서드 구조 

[접근 제한자] [리턴타입] [메서드 이름]([매개변수]) 형태

ex) 
public void Test(string a)
{
   Console.WriteLine(a);
}

private int Test1(int a)
{
	int sum = a + 1;
	return num
}

접근 제한자 : public, private
리턴 타입 : void, int
메서드 이름 : Test, Test1
매개변수 : a

Test("테스트"); // 메서드 호출, {}안 내용 수행 -> "테스트" 출력
Test1(1); // 2 출력

 

 

접근제한자(Access Modifier) 종류

 

public : 모든 곳에서 접근 가능

protected : 같은 클래스와 파생 클래스 내에서만 접근 가능

private : 같은 클래스 내에서만 접근 가능

internal : 같은 어셈블리 내에서만 접근 가능

protected internal  : 같은 어셈블리 내 와 다른 어셈블리의 파생 클래스에서 접근 가능 

private protected : 같은 어셈블리 내 파생클래스에서만 접근 가능

 

※접근 제한자를 작성하지 않은 경우 기본 Private으로 자동 지정됨.

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/methods

 

메서드 - C#

C#의 메서드는 일련의 문을 포함하는 코드 블록입니다. 프로그램은 메서드를 호출하고 인수를 지정하여 문을 실행합니다.

learn.microsoft.com

 

모듈 ?

기능 단위로, 독립적인 부분으로 분리하여 묶은 것.

용도가 비슷한 함수나 객체, 메서드 등이 이에 해당 

 

c#에선 직접적인 모듈 키워드는 없지만 네임스페이스와 어셈블리를 통해 유사하게 구현.

 

https://learn.microsoft.com/ko-kr/dotnet/api/system.reflection.module?view=net-8.0

 

 

구조체 (Structure)

여러 개의 데이터를 하나로 묶는 사용자 정의 타입

struct 키워드를 사용하여 선언, 변수와 메서드로 구성

Struct student
{
    public stirng name;
    public int grade;
    public int class_num;
    public int number;
 
    public void ID()
    {
    	Console.WriteLine(" {0}학년 {1}반 {2}번 {3}", grade, class_num, number, name)
    }
    
}

student person
student.name = "john"; // . 연산자를 통해 구조체에 접근

 

 

구조체 특징 

상속을 지원하지 않는다.

값(Value Type)타입 = 스택에 저장

 

체지향 프로그래밍(Object-Oriented Programming, OOP)

5가지(앞 글자만 따서 SOLID) 원칙을 따르며,

객체 지향을 효과적으로 진행하기 위한 디자인 패턴이 있다.

 

단일책임 원칙(Single Responsibility Principle / SRP)

개방-폐쇄 원칙(Open Closed Principle / OCP)

리스코프 치환 원칙(Liskov Substitution Principle/ LSP)

인터페이스 분리 원칙 (Interface Segregation Principle/ ISP)

의존성 역전 원칙(Dependency Inversion Principle / DIP)

 

2024.10.07 - [디자인 패턴] - 디자인 패턴에 대해 알아보자 #1 Solid 원칙

 

객체 지향 프로그래밍 특징

캡슐화(EnCapsulation) :

관련 데이터와 기능을 하나의 객체 단위로 묶는 것.

-> 정보 은닉 및 접근을 제한함으로 안정성과 유지보수성을 높이기 위한 개념.

 

추상화(Abstraction) : 

클래스의 필수 기능만 표시하고 불필요한 정보는 숨겨, 간결하게 표현

 

상속(Inheritance) :

클래스를 확장하여 새로운 클래스 생성

 

다형성(Polymorphism) :

같은 이름의 메서드가 다른 기능 수행

 

 

-> 다형성, 상속은 개념 정리 4에서 자세히 서술

 

객체(object)

클래스로부터 생성된 실체 , 클래스의 개별 인스턴스

인스턴스 = 특정 형태로 만든 결과물 

 

public class Car
{
  //... 내용
}

Car myCar = new Car();
Car yourCar = new Car();

// myCar와 yourCar 모두 Car 클래스의 객체이자, 인스턴스

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/tutorials/oop

 

클래스 

데이터와 메서드를 하나로 묶은 사용자 정의 타입.

클래스 특징 

상속을 지원한다.

참조(Reference type) 타입 = 힙에 저장

클래스 구성 요소

필드(Fields):

클래스나 구조체 내에서 객체의 상태를 저장하는 변수

보통 private 접근 제한자를 사용.

 

메서드(Methods) :

특정 작업을 수행하기 위해 사용되는 독립적 기능 단위.

클래스나 구조체에서 객체의 동작 정의. 

 

생성자(Constructors):

클래스와 이름이 같은 멤버(member) 메서드, 클래스 인스턴스 생성할 때 호출되는 메서드

 

맴버(member) = 클래스나 구조체 내부에 정의된 요소들을 총칭  

 

소멸자(Decstructors):

인스턴스가 메모리에서 해제될 때 호출되는 메서드

~ 기호를 붙여 표현

 

- Finalize 메서드의 구현체 (개념정리 6 예외처리 내용 참고)

 

소멸자가 자원해제와 메모리 해제의 역할을 하나,

CG에서도 이를 담당하고 있어 명시적인 소멸자 호출을 권장하지는 않음.

 

 

 

 

class Student
{
   
   // 필드 선언
    public int grade;
    public int class_num;
    
    //생성자
    public Student()
    {
    	grade = 1;
    	class_num = 1;
    }
    
    //소멸자
    ~Student()
    {
     Console.WriteLine("졸업"); // 객체 소멸 시 자동 수행
    }
    
    //메서드
    public void ID()
    {
    	Console.WriteLine(" {0}학년 {1}반", grade, class_num);
    }
    
}

Student Person = new Student(); //Student 클래스 인스턴스 생성, 디폴트 생성자 호출

 

클래스 유형

 

부분 (partial) 클래스 : 맴버를 여러 개의 파일로 나눠 정의

봉인(Sealed) 클래스 : 클래스가 상속받는 걸 제한

추상(abstract ) 클래스 : 객체를 만들 수 없고, 상속 하는 역할로만 사용

정적(Static) 클래스 : 상속을 허용하지 않는 클래스

 

프로퍼티(Property)

: 클래스 맴버로서, 객체 필드 값을 읽거나 설정하는데

사용되는 접근자(Acessor) 메서드 조합

 

get과 set 접근자를 사용하여 값을 읽고 설정한 동작 정의 

 

class Student
{
	public string name {get; set;} // 자동 프로퍼티

}

Student person = new Student();
person.name = "John"; // 값 설정

 

 

+ 알면 유용할 this 키워드

정의된 클래스 내 맴버를 가리킬 때 사용 가능

 

class Student
{
    public string name;
    
    public Student(string MyName)
    {
    	this.name = Myname;
    	
    }

}

 

 

4편으로 이어집니다.

 

 

https://www.guru99.com/ko/c-sharp-interview-questions.html

 

상위 50개 C# 인터뷰 질문 및 답변(2024)

신입생 및 경력자를 위한 C# 인터뷰 질문: 다음은 신입생 및 2/3/5/10년 경력 전문가를 위한 기본부터 고급 C# 인터뷰 질문과 답변 목록입니다.

www.guru99.com

 

https://shypang.tistory.com/16

 

C# 해외 면접시 TOP50

가장 인기있는 C # 인터뷰 질문 및 답변기본 개념에 대한 질문Q # 1) 객체와 클래스 란 무엇입니까?Ans : 클래스는 실시간 엔터티를 나타내는 데 사용되는 속성 및 메서드의 캡슐화입니다. 모든 인

shypang.tistory.com