Dasar-dasar Class dan Object di C# MVC dengan Contoh Kasus Reservation

1. Pendahuluan Dalam pemrograman berorientasi objek (OOP), konsep dasar yang harus dipahami adalah class dan object. Dalam konteks ASP.NET MVC, class sering digunakan untuk mendefinisikan model, controller, atau layanan, sedangkan object adalah instance dari class tersebut. Artikel ini akan membahas penerapan dasar-dasar class dan object menggunakan contoh kasus Reservation.

2. Apa itu Class dan Object?

Class adalah cetak biru atau template untuk membuat object. Class mendefinisikan properti (atribut) dan metode (perilaku) dari object.

Object adalah instance dari class, yang merepresentasikan data nyata dalam program.

Contoh sederhana:


public class Reservation
{
    public int ReservationId { get; set; }
    public string CustomerName { get; set; }
    public DateTime ReservationDate { get; set; }

    public void DisplayDetails()
    {
        Console.WriteLine($"Reservation ID: {ReservationId}, Name: {CustomerName}, Date: {ReservationDate}");
    }
}

3. Contoh Penerapan di ASP.NET MVC

3.1. Membuat Model Reservation Model digunakan untuk merepresentasikan data dalam aplikasi.


namespace MyApp.Models
{
    public class Reservation
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime Date { get; set; }
        public int NumberOfGuests { get; set; }
    }
}

3.2. Membuat Controller untuk Mengelola Reservasi Controller bertugas mengatur logika bisnis dan alur data.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using MyApp.Models;

namespace MyApp.Controllers
{
    public class ReservationController : Controller
    {
        private static List reservations = new List();

        // GET: Reservation
        public ActionResult Index()
        {
            return View(reservations);
        }

        // GET: Reservation/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: Reservation/Create
        [HttpPost]
        public ActionResult Create(Reservation reservation)
        {
            if (ModelState.IsValid)
            {
                reservation.Id = reservations.Count + 1;
                reservations.Add(reservation);
                return RedirectToAction("Index");
            }
            return View(reservation);
        }
    }
}

3.3. Membuat View untuk Menampilkan dan Menambah Reservasi

View Index.cshtml: Menampilkan daftar reservasi.

@model IEnumerable<MyApp.Models.Reservation>

<h2>Reservation List</h2>

<table>

    <thead>

        <tr>

            <th>ID</th>

            <th>Name</th>

            <th>Date</th>

            <th>Guests</th>

        </tr>

    </thead>

    <tbody>

        @foreach (var item in Model)

        {

            <tr>

                <td>@item.Id</td>

                <td>@item.Name</td>

                <td>@item.Date.ToString("MM/dd/yyyy")</td>

                <td>@item.NumberOfGuests</td>

            </tr>

        }

    </tbody>

</table>

View Create.cshtml : Form untuk menambah reservasi baru.

@model MyApp.Models.Reservation


<h2>Create Reservation</h2>

@using (Html.BeginForm())

{

    <div>

        @Html.LabelFor(model => model.Name)

        @Html.TextBoxFor(model => model.Name)

    </div>

    <div>

        @Html.LabelFor(model => model.Date)

        @Html.TextBoxFor(model => model.Date, "{0:yyyy-MM-dd}", new { @type = "date" })

    </div>

    <div>

        @Html.LabelFor(model => model.NumberOfGuests)

        @Html.TextBoxFor(model => model.NumberOfGuests)

    </div>

    <button type="submit">Create</button>

}

4. Penutup Class dan object adalah fondasi dari OOP, dan ASP.NET MVC menyediakan kerangka kerja yang ideal untuk mengimplementasikan konsep ini. Dengan memahami dasar-dasar class dan object, Anda dapat membangun aplikasi yang terstruktur dan mudah dikelola. Contoh kasus Reservation ini menunjukkan bagaimana model, controller, dan view berinteraksi untuk menciptakan alur kerja yang lengkap.

Previous
Next Post »