Car.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace ParkingManagement
{
class Car //설계도
{
public string PlateNumber { get; } //private라는 접근제한자를 가지고 있음 -> 공개해야함 / 멤버변수 plateNumber 만듦
public bool IsSUV { get; } //get만 가능, 읽기전용 속성 set은 허락해주는 것
public DateTime InTime { get; } //몇시에 들어와서 언제 나갔나 멤버변수에 포함
public DateTime OutTime;
public int Duration; // 주차시간(분) - 정수형 변수 / 멤버변수 추가 interger형으로 멤버변수 추가
public int PartCharge; // 주차요금(원)
private int age;
public int Age //접근제한자만 public 소문자 age와 대문자 Age를 엮어놓기만 하면 됨
{
get { return age; } //대문자 Age가 외부에서 진짜 나이를 알고 싶을 때 소문자 age를 들고가라
set
{
age = (value > 0) ? value : age;
//외부에서 알려준 값이 음수라면 오류로 설정을 할 수 있음
} //set 부분에 외부 value에서 의미가 있을 때 받아드리고 외부에서 제공한 값을 넣어주면 됨
}
public Car(string plate, bool isSUV) //bool true or false //생성자
{
PlateNumber = plate; //위에서 정의하고 있는 public 멤버변수값을 결정할수 있음 / PlateNumber 매개변수값으로 겨정
IsSUV = isSUV;
InTime = DateTime.Now;
}
public Car() //오버로딩
{
InTime = DateTime.Now;
}
}
}
Program.cs
using System;
namespace ParkingManagement
{
class Park
{
static int baseCharge1 = 1000; // 소형 기본(30분) static 넣어서 정적멤버로 바꿈
static int baseCharge2 = 1500; // 대형 기본(30분)
static int Rate1 = 500; // 소형 요율(30분)
static int Rate2 = 700; // 대형 요율(30분)
static void CalculateCharge(Car car) //요금계산하는 메서드 -> 메서드 반환을 생각해야함 void유요하지 않다, 빈손으로 돌아간다
{
Random rnd = new Random();
car.OutTime = car.InTime.AddMinutes(rnd.Next(200));
TimeSpan duration = car.OutTime - car.InTime;
car.Duration=(int)duration.TotalMinutes;
if (car.Duration <= 30)
{
if(car.IsSUV == true)
{
car.PartCharge = baseCharge2;
}
else
{
car.PartCharge = baseCharge1;
}
}
else
{
if (car.IsSUV == true)
{
car.PartCharge = baseCharge2 +
(int)Math.Ceiling((car.Duration-30)/30.0)*Rate2; //정수 나누기 정수가 안되서 30.0으로 바꿈
}
else
{
car.PartCharge = baseCharge1 +
(int)Math.Ceiling((car.Duration - 30) / 30.0) * Rate1;
}
}
}
//다음 난수를 만들어줘 //결과값 정수 정수값으로 반환으로 정의해도 됨, 자동차 설계도에 사용하지 않았던 멤버변수
static void Main(string[] args) //진입점
{
Car car = new Car("1234", false);
Car car1 = new Car();
car.Age = 10;
car.Age = -5;
Console.WriteLine(car.Age);
CalculateCharge(car);
Console.WriteLine("차량번호: {0}, 입차: {1}, 출자: {2}",
car.PlateNumber, car.InTime, car.OutTime);
Console.WriteLine("주차시간: {0}, 요금: {1}",
car.Duration, car.PartCharge);
}
}
}
'C#' 카테고리의 다른 글
BMI_Clinic - 기본 코드 (0) | 2021.07.27 |
---|---|
C# 상속 (0) | 2021.07.23 |
C# List Dictionary 예제 사과 딸기 (0) | 2021.07.23 |
C# Dictionary 예제 (0) | 2021.07.23 |
test2 list클래스 예제 (0) | 2021.07.23 |