728x90
https://www.youtube.com/watch?v=BHimqSqni98&list=PLVsNizTWUw7GN8wPRhclbKuQa9aI9Cj2V&index=8
📌 객체지향 프로그래밍
- 코드 내 모든 것을 객체로 표현하고자 하는 프로그래밍 패러다임
- 객체는 데이터(속성)과 기능(메서드)로 이루어짐
- 절차적 프로그래밍 : 코드의 순차적 실행
객체지향 프로그래밍 : 객체간의 상호작용
◾ 클래스와 객체
- 클래스는 객체를 만들기 위한 청사진클래스객체
형식 or 설계도 메모리에 적재된 실체 각 형식/클래스 별로 하나만 존재 이론적으로는 무한대로 생성 가능, 메모리를 차지 객체가 어떤 데이터 항목을 가지는지 정의 선언된 데이터 항목에 실제 데이터 저장 어떤 메서드를 가질지 정의 정의되어있는 메서드를 실행
◾ 클래스 선언
- class 키워드 이용
- 속성 → 클래스의 변수 → 필드
- 기능 → 메서드
class 클래스이름
{
//데이터와 메서드
}
◾ 객체 생성
- new 연산자와 생성자 이동
- 객체의 멤버(필드 및 메서드 등)에 접급 시 . 연산자 사용
cat kitty = new Cat();
Kitty color = "하얀색";
Kitty.Meow();
◾ 생성자와 종료자
- 생성자 : 객체가 생성될 때 호출
- 종료자 : 객체가 소멸될 때 호출
- 명시적 구현은 선택사항임
- 종료자가 언제 실행될 지는 알 수 X
class 클래스이름
{
//생성자
한정자 클래스이름 (매개변수목록)
{
// 필드 or 자원초기화가 들어감
}
//종료자
~클래스이름()
{
// 자원 정리
}
//필드
//메서드
}
◾ 생성자 오버로딩
- 객체의 필드를 초기화하는 다양한 옵션 제공 가능
class Cat
public Cat()
{ Name=""; Color=""; }
public Cat ( string_name, string_color}
{ Name = _Name; Color = _color; }
public string Name;
public string Color;
...
Cat kitty = new Cat();
kitty.name ="키티";
kitty.color = "하얀색";
Cat nabi = new Cat ("나비,"갈색");
◾ this 키워드
- 객체를 사용하는 코드에서 참조로 객체를 지칭
- 객체 내부에서 자신을 지칭할 때 사용하는 키워드
class Employee
{
private string Name;
public void SetName (string Name)
{
this.Name = Name;
}
}
◾ 접근 한정자
- 객체간의 상호 작용이 중심인 OOP에서는 각 객체는 다른 객체에게 자신의 내부 사정을 공유하지 않음
- 다른 객체에게 공유해야하는 멤버만 접근한정자를 이용하여 공개
- 접근 한정자는 멤버를 외부에 어떤 수준으로 공개할 지 결정
- public. protected, private
class Employee
{
private string Name;
}
◾ 상속
- 다른 클래스로부터 코드를 물려받는 것
- 상속의 대상 : 클래스 멤버(필드, 메서드, 프로퍼티 등)
- 새로 선언하는 클래스 이름 뒤에 콜론(:)과 기반 클래스의 이름을 표기하여 상속
- 물려주는 클래스 : 기반(부모) 클래스, 물려받는 클래스 : 파생(자식) 클래스
class 기반클래스
{
...
}
class 파생클래스 : 기반클래스
{
...
}
◾ 오버라이딩
- 기반 클래스에서 선언된 메서드를 자식 클래스에서 재정의하는 것
- 기반 클래스에서 오버라이딩 할 메서드를 미리 virtual 로 한정
- 파생 클래스는 virtual 메서드를 override 한정자를 이용하여 재정의
class ArmorSute
{
//오버라이딩을 위해 virtual 를 붙여줌
public virtual void Initialize()
{
Console.WriteLine("Armored");
}
}
class WarMachine : ArmorSuite
{
//오버라이딩
public override void Initialize()
{
base.Initialize();
Console.WriteLine("Micro-Roxket Launcher Armed");
}
}
◾ 구조체
- class 대신 struct 를 이용하여 선언
- 클래스는 참조형식, 구조체는 값 형식
- 클래스 인스턴스는 CG가 제거, 구조체 인스턴스는 스택이 자동 제거
struct 구조체 이름
{
//필드
//메서드
}
◾ 튜플
- 기본적으로 구조체, 즉 값형식
- 형식 이름 없이 선언하여 사용
- 일부 코드에서 즉석 활용되는 형식을 만들때 적합,
프로그램 전역에서 사용할 형식에서는 부적합
var tuple = (123, 789);
//var : 형식 추론.튜플에 담겨진 모양을 보고 추론
728x90
'C# > 이것이 C#이다' 카테고리의 다른 글
[C# 기초강의] Ch 09. 프로퍼티 (0) | 2023.08.10 |
---|---|
[C# 기초강의] Ch 08. 인터페이스와 추상클래스 (0) | 2023.08.10 |
[C# 기초강의] Ch 06. 메소드 (0) | 2023.08.09 |
[C# 기초강의] Ch 05. 흐름 제어 (0) | 2023.08.09 |
[C# 기초강의] Ch 04. 데이터를 가공하는 연산자 (0) | 2023.08.09 |