Skip to Content
CoursesCSC102คลาสจำลองระบบเวลาแบบยูนิกซ์มิลลิวินาที

คลาสจำลองระบบเวลาแบบยูนิกซ์มิลลิวินาที

โจทย์

สร้างคลาสชื่อ Time เพื่อแสดงการคำนวณเวลา คลาสควรประกอบด้วยสิ่งต่อไปนี้:

  • แอตทริบิวต์ (หรือฟิลด์ข้อมูล)
    • แอตทริบิวต์ private ประเภท long ชื่อ “hour”, “minute”, และ “second” ที่แสดงเวลา
  • คอนสตรักเตอร์
    • คอนสตรักเตอร์แบบไม่มีอาร์กิวเมนต์ที่สร้างวัตถุ Time สำหรับเวลาปัจจุบัน (ค่าของฟิลด์ข้อมูลจะแสดงเวลาปัจจุบัน)
    • คอนสตรักเตอร์ที่สร้างวัตถุ Time ด้วยเวลาที่ผ่านไปที่กำหนดนับตั้งแต่เที่ยงคืนของวันที่ 1 มกราคม 1970 เป็นมิลลิวินาที (ค่าของฟิลด์ข้อมูลจะแสดงเวลานี้)
    • คอนสตรักเตอร์ที่สร้างวัตถุ Time ด้วยชั่วโมง, นาที, และวินาทีที่ระบุ
  • เมธอด
    • เมธอด getter สามตัวสำหรับฟิลด์ข้อมูล hour, minute, และ second ตามลำดับ
    • เมธอดชื่อ setTime(long elapseTime) ที่ตั้งค่าเวลาใหม่ให้กับวัตถุโดยใช้เวลาที่ผ่านไป ตัวอย่างเช่น ถ้าเวลาที่ผ่านไปคือ 555550000 มิลลิวินาที ชั่วโมงคือ 10 นาทีคือ 19 และวินาทีคือ 10 เขียนคลาสไดรเวอร์ชื่อ TimeDriver ที่สร้างวัตถุ Time และแสดงชั่วโมง นาที และวินาทีในรูปแบบ ชั่วโมง:นาที:วินาที
InputOutput
55555000010:19:10

โค้ด

import java.util.Scanner; public class TimeDriver { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long elapsedTime = scanner.nextLong(); Time time = new Time(elapsedTime); System.out.printf("%d:%d:%d", time.getHour(), time.getMinute(), time.getSecond()); } } class Time{ private long hour; private long minute; private long second; public Time(){ hour = 0; minute = 0; second = 0; } public Time(long elapseTime) { setTime(elapseTime); } public Time(long hour, long minute, long second){ this.hour = hour; this.minute = minute; this.second = second; } public long getHour() { return hour; } public long getMinute() { return minute; } public long getSecond() { return second; } public void setTime(long elapseTime) { long totalSeconds = elapseTime / 1000; this.hour = (totalSeconds / 3600) % 24; this.minute = (totalSeconds % 3600) / 60; this.second = totalSeconds % 60; } }

คำอธิบาย

1. คลาส TimeDriver

คลาส TimeDriver เป็นคลาสหลักที่ใช้ในการรันโปรแกรม มีส่วนประกอบดังนี้:

1.1 เมธอด main

  • เมธอด main เป็นจุดเริ่มต้นของโปรแกรม
  • ใช้ Scanner เพื่อรับข้อมูลจากผู้ใช้
  • รับค่าเวลาที่ผ่านไป (elapsed time) จากผู้ใช้
  • สร้างวัตถุ Time โดยใช้เวลาที่ผ่านไปนั้น
  • แสดงผลเวลาในรูปแบบ ชั่วโมง:นาที:วินาที

2. คลาส Time

คลาส Time เป็นคลาสที่ใช้จัดการเกี่ยวกับเวลา มีส่วนประกอบดังนี้:

2.1 ตัวแปร

  • hour: เก็บค่าชั่วโมง
  • minute: เก็บค่านาที
  • second: เก็บค่าวินาที

ทั้งหมดเป็นตัวแปรแบบ private ซึ่งหมายความว่าไม่สามารถเข้าถึงได้โดยตรงจากภายนอกคลาส

2.2 คอนสตรักเตอร์ (วิธีสร้างวัตถุ)

  1. Time(): สร้างวัตถุ Time โดยกำหนดค่าเริ่มต้นเป็น 0:0:0
  2. Time(long elapseTime): สร้างวัตถุ Time โดยใช้เวลาที่ผ่านไปเป็นมิลลิวินาที
  3. Time(long hour, long minute, long second): สร้างวัตถุ Time โดยระบุชั่วโมง นาที และวินาที

2.3 เมธอด getter

  • getHour(): ส่งคืนค่าชั่วโมง
  • getMinute(): ส่งคืนค่านาที
  • getSecond(): ส่งคืนค่าวินาที

2.4 เมธอด setTime

เมธอด setTime(long elapseTime) ใช้สำหรับกำหนดเวลาใหม่ให้กับวัตถุ Time โดยใช้เวลาที่ผ่านไปเป็นมิลลิวินาที:

  1. แปลงมิลลิวินาทีเป็นวินาทีทั้งหมด
  2. คำนวณชั่วโมงโดยหารด้วย 3600 และเอาเศษจากการหารด้วย 24 (เพื่อให้ได้ค่าระหว่าง 0-23)
  3. คำนวณนาทีโดยใช้เศษจากการหารด้วย 3600 แล้วหารด้วย 60
  4. คำนวณวินาทีโดยใช้เศษจากการหารด้วย 60
ปรับปรุงล่าสุด