객체 지향 프로그래밍 OOP
객체: 속성과 동작
객체 지향 프로그래밍(Object-Oriented Programming): 객체 위주로 프로그래밍 하는 것

절차적 프로그래밍: 기능 구현에 초점, 함수를 역할별로 나누어 개발
- 데이터 접근이 쉬움
- 문제점) 이곳 저곳에서 데이터에 접근해 유지보수가 어려움
- 문제점) 스케일이 커지며 관리가 어려워짐
객체 지향 프로그래밍: 객체를 역할별로 나누어 개발
- 클래스가 데이터를 보호해 데이터 접근이 어려움
- 스케일이 커져도 관리가 쉬움
- 문제점) 제한적으로 데이터에 접근시키려 객체화로 설계하는 부분이 비교적 어려움
객체화: 속성과 동작을 정의
클래스: 객체화 시킨 개념을 프로그래밍하기 위한 정의서, 각 칼럼에 적당한 데이터 타입과 제한 접근을 지정
인스턴스: 생성된 객체
객체 지향의 4대 특징
캡슐화 (Encapsulation)
클래스에 포함된 변수와 메소드를 다른 객체로부터 접근 제한을 설정해 보호
추상화 (Abstraction)
다형성 (Polymrphism)
상속성 (Inheritance)
접근 제한)
public, protected: 자식 클래스까지 공개, private: 비공개, 생략시 자동으로 private
+ 이름은 공개, 수정은 비공개로 하려면?
이름을 반환하고 변경하는 메소드를 따로 만들기

GetName -> private인 name 변수를 return 하는 public 함수
SetName -> private인 name 변수의 값을 매개변수 name의 값으로 바꾸는 private 함수

모든 변수에 대해 get, set 함수를 만들어줬지만 변수가 생길때마다 이를 해줘야 한다 (So 귀찮)
=> 프로퍼티 사용
프로퍼티(Property): 멤버 변수와 메소드를 동시에 만듦

get; -> GetName 함수와 동일, set-> SetName 함수와 동일
get, set에 각각 접근 제한자를 정해줄 수 있음
접근 제한자를 안 쓴다면, 해당 멤버 변수의 접근 제한자가 지정
ex) name의 get은 생략해서 public이 됨
get, set을 생략한다면 Get(), Set() 메소드를 안 만든것과 동일

s.name = "가렌" 인 부분에서 set 프로퍼티가 사용됨
* name의 set은 private이라 사실 가렌으로 변경이 불가능
s.name == "니달리" 인 부분에서 get 프로퍼티가 사용됨
* name의 get이 public이라 이름을 가져올 수 있음

프로퍼티 커스텀이 가능
get 프로퍼티는 값을 무조건 반환해줘야됨
set 프로퍼티에서는 입력받은 값을 value로 알 수 있음]
프로퍼티의 제일 큰 장점: 선언은 변수처럼 사용은 함수처럼 가능하다는 점
인덱서 (Indexer)
인덱스를 이용해 객체 내의 데이터에 접근할 수 있는 프로퍼티, 객체를 배열처럼 사용 가능


실행시 3 / 인덱스 초과 / 인덱스 초과 / 0이 나온다
+ 다음 내용
https://dani2344.tistory.com/143
[C#] 객체 지향 추상화, 상속성, 다형성
이전 내용:https://dani2344.tistory.com/142 [C#] OOP 객체 지향, 4대 특징 중 캡슐화와 프로퍼티객체 지향 프로그래밍 OOP객체: 속성과 동작객체 지향 프로그래밍(Object-Oriented Programming): 객체 위주로 프로그
dani2344.tistory.com
'공부 > C#' 카테고리의 다른 글
[C#] 이벤트 액션 델리게이트 event action delegate (0) | 2025.06.16 |
---|---|
[C#] 객체 지향 추상화, 상속성, 다형성 (0) | 2025.05.22 |
[C#] 합이 n이 되는 순열 구하기 (백트래킹 DFS) (0) | 2025.05.21 |
[C#] 함수, 클래스 (+소수 둘째자리까지 출력) (0) | 2025.05.21 |
[C#] 배열 (0) | 2025.05.20 |