C#

C# age = (value > 0) ? value : age;

하이브 Hive 2021. 7. 23. 15:34
반응형

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);
            }
        }

    }

반응형