클래스(class)와 객체지향
이전 시간
메서드
int Add(int a, int b)
{
return a + b;
}
반환형식 메서드 명(매개변수)
{
// 명령
(return 반환값)
}
Add(1, 2) ; 3
메서드 명(매개변수)
Call By Reference(Ref, Out 키워드)
void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
변수, 기본적인 메서드
Main() 메서드
클래스
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("나이를 입력해주세요.")
int age = int.Parse(Console.ReadLine());
Console.WriteLine(age);
}
}
배경
- 절차지향 프로그래밍 -
엔진 -> 핸들 -> 차체 -> 의자 -> 바퀴
A라는 자동차 만들기
B라는 자동차 만들기
기본 엔진을 사용해서 엔진 만들기
엔진이라는 것 부터 만들기
엔진 -> 차체 -> 핸들 -> 의자 -> 바퀴
엔진 -> 핸들 -> 차체 -> 의자 -> 바퀴
엔진 -> 차체 -> 핸들 -> 의자 -> 바퀴
절차지향 프로그래밍
순차적인 처리가 중요시 되며
프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
예) 자판기 프로그램
돈을 받는다
버튼이 눌려질때까지 대기
버튼이 눌린 가격과 돈을 비교
돈이 된다면 음료수 내보내기
A 기능
B 기능
C 기능
A 기능
B` 기능
C 기능
A 기능
B 기능
C 기능
절차지향에서 하고 싶었던 것
핸들
바퀴
의자
자동차
붉은 자동차
노란 자동차
검은색 자동차
전반적인 자동차 설계도
객체지향 프로그래밍
(OOP; Object Oriented Programming)
의사나 행위가
미치는 대상
객체
전체나 집단에 상대하여
하나하나의 낱개
개체
Object
물건
객체
붉은 자동차(객체)
노란 자동차(객체)
검은색 자동차(객체)
전반적인 자동차 설계도
객체지향 프로그래밍
항상 어떤 문제를 해결하는데 있어서
설계도(class)의 개체를 만들어 사용한다.
자판기(설계도로 객체 만듦)
돈을 받는다(기능; 메서드)
버튼이 눌려질때까지 대기(기능; 메서드)
버튼이 눌린 가격과 돈을 비교(기능; 메서드)
돈이 된다면 음료수 내보내기(기능; 메서드)
상향식
객체지향 프로그래밍
class Program
{
static void Main(string[] args)
{
Car redCar = new Car("빨강");
redCar.PrintColor();
}
}
class Car
{
private string color;
public Car(string _color)
{
color = _color;
}
public void PrintColor()
{
Console.WriteLine(color);
}
}
설계도(클래스)
class Car
{
private string color;
public Car(string _color)
{
color = _color;
}
public void PrintColor()
{
Console.WriteLine(color);
}
}
class [클래스 명]
{
//클래스의 필드(변수) 및 메서드(함수)
}
클래스의 선언(1)
class Car
{
변수 color
메서드 PrintColor
}
클래스의 선언(2) - 접근 제한자
private string color;
public void PrintColor()....
[접근제한자] [자료형] [변수이름];
[접근제한자] [반환형] [메서드명]([매개변수]){
//명령
}
클래스의 선언(2) - 접근 제한자
public
클래스 내, 외부에서 접근 가능
private
클래스 내부에서만 접근 가능
클래스의 선언(3) - 생성자
class Car
{
private string color;
public Car(string _color)
{
color = _color;
}
//....
}
클래스의 선언(3) - 생성자
public [클래스 이름]([매개변수])
{
//명령
}
개체가 생성되면서 필요한
변수 초기화 및 기능 실행부
(특수한 메서드)
생략 가능
클래스 내 변수 접근
public void ChangeColor(string _color)
{
color = _color;
}
public void ChangeColor(string color)
{
this.color = color;
}
1. 매개변수 이름 바꾸기
2. this키워드 사용하기
클래스 내 변수 접근
public void ChangeColor(string color)
{
color = color; // ???
}
메서드 내에서는 매개변수인 color가 우선순위 더 높음
객체의 선언
[클래스 명] [객체 명] = new [클래스 명]([생성자 매개변수])
Car redCar = new Car("빨강")
public Car(string color)
{
this.color = color;
}
class Program
{
static void Main(string[] args)
{
Car redCar = new Car("빨강");
redCar.PrintColor();
}
}
class Car
{
private string color;
public Car(string _color)
{
color = _color;
}
public void PrintColor()
{
Console.WriteLine(color);
}
}
필드
Q. 사람 객체들을 만들자
변수 : 나이, 이름
메서드: 17 ~ 19살이면 고등학생이라고 출력하는 기능
만들어야하는 객체: 자유
번외: 소멸자
개체가 소멸되면서 필요한 기능 실행부
(특수한 메서드)
~[클래스 이름]()
{
//명령
}
번외: 소멸자
c / c++
free, delete로 직접 객체 제거
c#
가비지 컬렉터라는 클래스가 객체를 제거
따라서 객체 소멸이 되는 순간을 모름
객체(레퍼런스 형)은 사용 후 제거 해야 됨.
=> 힙이라는 저장 공간 특성
클래스(1)
By qwd0214
클래스(1)
- 51