개념 정리 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