3. object
oriented programming
OOP dengan C# (Bagian 1)
Topik
yang dibahas kali ini
- Class dan Object
- C# Modifier
- Konstruktor
- Initilizer
Class vs Object
Jika anda ingin membangun rumah Class adalah
blueprint / gambar (berisi spesifikasi lengkap dari rumah yang akan dibuat,
ukuran, jumlah, dll). Sedangkan object adalah bentuk fisik / rumah yang
dibangun berdasarkan blueprint / class yang sudah ada, biasa disebut instan
class / object.
Elemen Pada Class
Class
pada C# terdiri dari :
·
Instance Variable / Field
·
Method
Method
digunakan untuk merubah state pada field.
Mendefinisikan Class
Class di C# dapat terdiri dari kumpulan variable
(field), property dan method. Cara untuk menggunakan class adalah dengan
membuat instan class-nya. Untuk menjalankan class maka harus ada satu method
main pada class tersebut. contoh pendeklarasian class di C# sebagai berikut:
1: public class Time
2: {
3: // private
variables atau field
4: private int year;
5: private int month;
6: private int date;
7: private int hour;
8: private int minute;
9: private int second;
10:
11: // public
methods
12: public void DisplayCurrentTime()
13: {
14:
Console.WriteLine("Menampilkan Waktu..");
15: }
16: }
17:
18: class Program
19: {
20: static void Main(string[] args)
21: {
22: Time
timeObject = new Time(); //membuat instan
class
23:
timeObject.DisplayCurrentTime(); //memanggil method dalam class
24: }
25: }
C# Modifier
C#
memiliki beberapa modifier class yaitu:
Access Modifiers
Access Modifiers digunakan untuk menentukan hak akses
dari class dan method, adapun access modifier yang ada pada C# sebagai berikut:
Method Arguments
Method pada C# dapat memiliki banyak argumen dengan
tipe data yang berbeda. Method juga dapat memiliki nama yang sama asal
parameter / tipe datanya berbeda (Method Overloading).
1: class MyClass {
2: public void SomeMethod(int firstParam, double secondParam) {
3:
Console.WriteLine("Parameter 1 : {0} dan parameter 2 : {1}",
4:
firstParam, secondParam);
5: }
6:
7: //overload
method
8: public void SomeMethod(int firstParam) {
9:
Console.WriteLine("Parameter 1 : {0}", firstParam);
10: }
11:
12: public void SomeMethod(int firstParam, string secondParam) {
13:
Console.WriteLine("Parameter 1 : {0} dan parameter 2 : {1}",
14:
firstParam, secondParam);
15: }
16: }
17:
18: class MethodArgumen {
19: static void Main(string[] args) {
20: MyClass
m1 = new MyClass(); //membuat
instan object
21:
m1.SomeMethod(12, 1.25);
22:
m1.SomeMethod(34);
23: m1.SomeMethod(12,
"Hello");
24: }
25: }
Konstruktor
Konstruktor adalah method yang namanya sama dengan
nama class-nya. Konstruktor digunakan untuk inisialisasi variabel ketika
membuat instan class / objek baru.
Konstruktor juga dapat di-overload (anda dapat
membuat konstruktor lebih dari satu asal parameternya jumlahnya beda atau tipe
datanya beda). Variabel dalam class harus diinisialisasi, nilai defaultnya
adalah
1: public class Time {
2: // private
member variables
3: int Year;
4: int Month;
5: int Date;
6: int Hour;
7: int Minute;
8: int Second;
9:
10: // constructor
11: public Time(System.DateTime dt) {
12: Year =
dt.Year;
13: Month =
dt.Month;
14: Date =
dt.Day;
15: Hour =
dt.Hour;
16: Minute =
dt.Minute;
17: Second =
dt.Second;
18: }
19:
20: // public
methods
21: public void DisplayCurrentTime() {
22:
System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
23: Month,
Date, Year, Hour, Minute, Second);
24: }
25:
26: }
27:
28: class LatKonstruktor {
29: public static void Main(string[] args) {
30: DateTime
currTime = DateTime.Now;
31: Time t =
new Time(currTime); //memanggil
constructor
32:
t.DisplayCurrentTime();
33: }
34: }
Initializer
Pada C# anda bisa menginisialisasi variabel dalam
class secara langsung tanpa harus mengisialisasi-nya lewat konstruktor.
1: public class Time
2: {
3: // private
member variables
4: int year;
5: int month;
6: int date;
7: int hour;
8: int minute;
9: int second = 30; //initializer
10: }
OOP dengan C# (Bagian
2)
Topik yang dibahas
- Mengunakan Using
Statement
- Passing
Parameter
- Overloading
Konstruktor dan Method
- Enkapsulasi data
dengan property
- Gen dan Set
Accessor
Overloading Konstruktor
& Method
Pada C# anda
dapat mendeklarasikan method atau konstruktor dengan nama yang sama pada sebuah
class, tetapi parameter method tersebut harus berbeda bisa jumlah atau tipe
datanya. Pada contoh dibawah ini akan ditunjukan bagaimana cara menggunakan
overloading konstruktor
1: public class Time
2: {
3: // private member variables
4: private int Year;
5: private int Month;
6: private int Date;
7: private int Hour;
8: private int Minute;
9: private int Second;
10:
11: // public accessor methods
12: public void DisplayCurrentTime()
13: {
14: System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
15: Month, Date, Year, Hour, Minute, Second);
16: }
17: // constructors
18: public Time(System.DateTime dt)
19: {
20: Year = dt.Year;
21: Month = dt.Month;
22: Date = dt.Day;
23: Hour = dt.Hour;
24: Minute = dt.Minute;
25: Second = dt.Second;
26: }
27: public Time(string strTime) // overloading konstruktor
28: {
29: Console.WriteLine(strTime);
30: }
31:
32: public Time(int Year, int Month, int Date,
33: int Hour, int Minute, int Second) // overloading konstruktor
34: {
35: this.Year = Year;
36: this.Month = Month;
37: this.Date = Date;
38: this.Hour = Hour;
39: this.Minute = Minute;
40: this.Second = Second;
41: }
42: }
43:
44: class Tester
45: {
46: public void Run()
47: {
48: System.DateTime currentTime = System.DateTime.Now;
49: Time time1 = new Time(currentTime);
50: time1.DisplayCurrentTime();
51: Time time2 = new Time(2000, 11, 18, 11, 03, 30);
52: time2.DisplayCurrentTime();
53: }
54:
55: static void Main()
56: {
57: Tester t = new Tester();
58: t.Run();
59: }
60: }
Selain konstruktor overloading
juga bisa diterapkan pada method dalam suatu class yang sama, contoh
penulisannya:
1: void MyMethod(int p1);
2: void MyMethod(int p1, int p2); // beda banyak parameter
3: void MyMethod(int p1, string s1); // beda tipe data
Enkapsulasi data dengan Property
Enkapsulasi /
penyembunyian informasi adalah konsep yang selama ini sering anda dengar. Pada
OOP informasi dibungkus dalam sebuah Class sehingga orang yang menggunakan
class tersebut tidak perlu tahu detail-nya, hanya cukup mengetahui method dan
property apa saja yang ada dalam class tersebut beserta kegunaannya.
Pada
pemrograman berorientasi objek variabel dalam class biasanya diberi access
modifier private, ini berarti hanya method dalam class tersebut yang dapat
mengakses variabelnya. Jika anda membuat variable tersebut public maka user
yang menggunakan class tersebut bisa memasukan nilai yang tidak kita inginkan,
maka anda harus mendeklarasikan variable tersebut secara private agar pada saat
setMethod() anda dapat menambahkan validasi inputan dari user. Anda bisa
membuat public method set dan get untuk memberi dan mengambil nilai variabel
tersebut, misal:
1: // private member variables
2: private int Year;
3:
4: public int getYear() //get method
5: {
6: return this.Year;
7: }
8:
9: public void setYear(int Year) //set method
10: {
11: this.Year = Year;
12: }
Selain
menggunakan cara tersebut diatas pada C# disediakan object property
untuk memberi nilai dan mengambil nilai dari private variabel dalam suatu
class. Penggunaan object property lebih memudahkan anda dalam penulisan kode
dibandingkan harus membuat dua method set dan get untuk mengakses satu variabel
private. Contoh penggunaan property dapat dilihat pada contoh kode dibawah ini.
1: class Mahasiswa {
2: private string nim;
3: private string nama;
4:
5: public string Nim {
6: get {
7: return nim;
8: }
9: set {
10: this.nim = value;
11: }
12: }
13:
14: public string Nama {
15: get {
16: return nama;
17: }
18: set {
19: this.nama = value;
20: }
21: }
22:
23: public string DisplayInfo() {
24: return Nim + " " + Nama;
25: }
26: }
27:
28: class ClassProperty {
29: public static void Main(string[] args) {
30: Mahasiswa mhs1 = new Mahasiswa();
31: mhs1.Nim = "22002321";
32: mhs1.Nama = "Erick";
33: Console.WriteLine(mhs1.DisplayInfo());
34: }
35: }
Get Accessor
Penggunakan
get{} pada property mirip dengan jika anda menggunaan method getValue() /
getter method pada java, get pasti mengembalikan nilai jadi dalam kalang get harus
ada return valuenya.
Set Accessor
Penggunaan
set{} pada property mirip dengan jika anda menggunakan setValue() / setter
method pada java, set digunakan untuk memberi nilai kedalam class variable.
Pada C# jika anda memberi nilai pada property maka set{} otomatis dijalankan.
OOP dengan C# (Bagian
3)
Pada topik ini akan dibahas
- Inheritance
- Polymorphism
Inheritance
Pada C# hubungan spesialisasi
diimplementasikan menggunakan prinsip inheritance. Penulisan inheritance di C#
sebagai berikut
public class ListBox : Window
Kode diatas berarti class ListBox
adalah turunan dari class Window
Penggunaan inheritance dapat
dilihat pada program dibawah ini
1: public class Window {
2: //variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas
3: //turunannya
4: private int top;
5: private int left;
6:
7: //objek konstruktor
8: public Window(int top, int left) {
9: this.top = top;
10: this.left = left;
11: }
12:
13: public void DrawWindow() {
14: Console.WriteLine("Draw window pada ({0},{1})",
15: top, left);
16: }
17: }
18:
19: public class ListBox : Window {
20: //member variable baru pada class anak
21: private string listBoxContent;
22: public ListBox(int top, int left, string contents):base(top,left) {
23: this.listBoxContent = contents;
24: }
25:
26: //versi baru karena override dari base classnya
27: public new void DrawWindow() {
28: base.DrawWindow();
29: Console.WriteLine("Menuliskan string pada listbox: {0}",
30: listBoxContent);
31: }
32: }
33:
34: class LatInheritance {
35: public static void Main(string[] args) {
36: Window objWindow = new Window(10, 15);
37: objWindow.DrawWindow();
38:
39: ListBox objList = new ListBox(15, 20, "Hello ListBox");
40: objList.DrawWindow();
41: }
42: }
Polymorphism
Aspek kedua
yang tidak kalah penting dari inheritance adalah polymorhism, poly berarti
banyak dan morph berarti bentuk, jadi polymorphism dapat berarti dapat
menggunakan banyak bentuk tanpa harus mengacu details yang sama.
Dari istilahnya
Polymorphism kesannya sulit dan kompleks, tetapi sebenarnya simple,
ilustrasinya begini ketika sebuah perusahaan telpon / provide telpon
mengirimkan signal ke anda (dering telpon), mereka tidak tahu telpon apa yang
anda gunakan, bisa model lama dengan dering kuno, bisa HP dengan dering music
mp3, TV Phone, PDA Phone dll. yang provider tahu bahwa masing-masing telepon
mempunyai ‘base type’ telepon dan mempunyai method untuk berdering. Ketika
provider mengirimkan signal mereka hanya berharap bahwa telepon akan berdering
tidak peduli jenis telponnya, nah provider telepon memperlakukan telepon anda
secara polymorphism.
Membuat Type
Polymorphism
Dari gambar
diatas dapat anda lihat, ListBox is-a Control (karena ListBox turunan dari
Control), Button is-a Control, kita berharap bahwa dapat memperlakukan keduanya
sebagai Control. Misal anda mempunyai banyak control di collection untuk
digambar ke windows, dan mengharapkan ketika memanggil method draw() pada
control maka control2 tersebut akan tergambar sesuai dengan tipe objectnya
(mis: ListBox, RadioButton, Command, dll).
Anda dapat mengimplementasikan
polymorphism dengan dua cara yaitu:
- Membuat virtual method pada base class (class induk)
- Membuat class turunan yang mempunyai method dengan keyword override
yang mengganti isi dari method dengan keyword virtual yang ada pada
base class-nya.
Penggunaan prinsip polymorphism
dapat dilihat pada contoh program dibawah ini
1: public class Control {
2: //variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas
3: //turunannya
4: private int top;
5: private int left;
6:
7: protected int Top {
8: get {
9: return this.top;
10: }
11: set {
12: this.top = value;
13: }
14: }
15:
16: protected int Left {
17: get {
18: return this.left;
19: }
20: set {
21: this.left = value;
22: }
23: }
24:
25: //objek konstruktor
26: public Control(int top, int left) {
27: Top = top;
28: Left = left;
29: }
30:
31: public virtual void DrawWindow() {
32: Console.WriteLine("Draw window pada ({0},{1})",
33: top, left);
34: }
35:
36: }
37:
38: public class ListBox : Control {
39: //member variable baru pada class anak
40: private string listBoxContent;
41: public ListBox(int top, int left, string contents)
42: : base(top, left) {
43: this.listBoxContent = contents;
44: }
45:
46: //versi baru karena override dari base classnya
47: public override void DrawWindow() {
48: base.DrawWindow();
49: Console.WriteLine("Menuliskan string pada listbox: {0}",
50: listBoxContent);
51: }
52:
53: }
54:
55: public class Button : Control {
56: public Button(int top, int left) : base(top, left) {}
57:
58: public override void DrawWindow() {
59: //base.DrawWindow();
60: Console.WriteLine("Menggambar button pada ({0},{1})", Top, Left);
61: }
62: }
63: class LatPolymophism {
64: static void Main(string[] args) {
65: Control win = new Control(10, 15);
66: ListBox lstBox = new ListBox(5, 10, "Text pada ListBox");
67: Button b = new Button(5, 6);
68: win.DrawWindow();
69: lstBox.DrawWindow();
70: b.DrawWindow();
71:
72: Control[] winArray = new Control[3];
73: winArray[0] = new Control(10, 15);
74: winArray[1] = new ListBox(5, 10, "Pada ListBox");
75: winArray[2] = new Button(5, 6);
76:
77: for (int i = 0; i < 3; i++) {
78: winArray.DrawWindow();
79: }
80: }
81: }
Dapat dilihat
dari contoh diatas bahwa base class yaitu Window mempunyai method yang bernama
DrawWindow() yang mempunyai keyword virtual, ini berarti method tersebut dapat
di override atau diganti implementasinya dengan method yang nama dan
parameternya sama persis di kelas turunannya yaitu class ListBox.
OOP dengan C# (Bagian
4)
Topik yang akan dibahas:
- Abstract Class
- Sealed Class
- Class Object
Abstract Class
Setiap tipe
Window pasti mempunyai bentuk tampilan yang berbeda misal combobox, listbox,
button, dll. Berarti setiap class turunan dari Window harus mempunyai method
DrawWindow() nya sendiri yang berbeda satu sama lain. Untuk memastikan bahwa
setiap class turunan Control harus mempunyai method DrawWindow() maka anda
harus mendefinisikan class tersebut sebagai abstract class dan memiliki
method abstract yang belum diimplementasikan.
Abstract method
tidak mempunyai implementation, abstract method hanya semacam kontrak yang
harus dipenuhi. Semua class yang diturunkan dari class yang mempunyai abstract
method harus mengimplementasikan method tersebut.
Class yang
didefinisikan sebagai abstract class tidak dapat dibuat instan class / objek,
class yang didefinisikan abstract hanya dapat digunakan dengan cara diturunkan.
1: public abstract class Control {
2: private int top;
3: private int left;
4:
5: protected int Top {
6: get { return this.top;}
7: set { this.top = value;}
8: }
9: protected int Left {
10: get {return this.left;}
11: set {this.left = value;}
12: }
13: public Control(int top, int left) {
14: Top = top;
15: Left = left;
16: }
17: //abstract method harus diimplementasikan
18: public abstract void DrawWindow();
19: }
20:
21: public class ListBox : Control {
22: private string listBoxContent;
23: public ListBox(int top, int left, string contents)
24: : base(top, left) {
25: this.listBoxContent = contents;
26: }
27:
28: public override void DrawWindow() {
29: Console.WriteLine("Position :({0},{1})", Top, Left);
30: Console.WriteLine("Menuliskan string pada listbox: {0}",
31: listBoxContent);
32: }
33:
34: }
35:
36: public class Button : Control {
37: public Button(int top, int left) : base(top, left) { }
38: public override void DrawWindow() {
39: Console.WriteLine("Menggambar button pada ({0},{1})", Top, Left);
40: }
41: }
42: class LatAbstract {
43: static void Main(string[] args) {
44: Control[] winArray = new Control[3];
45: winArray[0] = new ListBox(5, 10, "Pada ListBox");
46: winArray[1] = new Button(5, 6);
47: for (int i = 0; i < 2; i++) {
48: winArray.DrawWindow();
49: }
50: }
51: }
Tapi untuk
kasus diatas abstract masih mempunyai keterbatasan, jika anda ingin membuat
class DropDownList yang hendak diturunkan dari class ListBox, maka anda tidak
dapat memaksakan method DrawWindow() harus ada di class tersebut.
Object Root dari semua
class
Semua class
dari semua type diturunkan dari satu class untama yaitu class object. Meskipun
tidak dituliskan secara eksplisit namun pada dasarnya semua class diturunkan
dari class object.
Beberapa method
yang ada pada class object adalah: Equals(), GetHashCode(), GetType(),
ToString(), Finalize(), MemberwiseClone(), ReferenceEquals().
Method dari
class yang ada diatas dapat dioverride oleh semua class karena pada dasarnya
semua class diturunkan dari class object.
1: public class Cat {
2: private int weight;
3: public Cat(int weight) {
4: this.weight = weight;
5: }
6:
7: public override string ToString() {
8: return weight.ToString();
9: }
10: }
11: class LatObject {
12: static void Main(string[] args) {
13: Cat catty = new Cat(60);
14: Console.WriteLine("Berat si catty : " + catty);
15: }
16: }
Interfaces
Jika anda ingin
mendefinisikan tipe baru tetapi tidak ingin mengimplementasikan isinya secara
langsung maka anda dapat menggunakan interfaces.
Pada dasarnya
interface adalah sebuah kontrak, ketika anda mendesign interface seolah-olah
anda mengatakan “jika anda ingin menggunakan class ini maka anda harus
mengimplementasikan method, property yang sudah disediakan”. Class yang
menggunakan interface tersebut setuju dengan kontrak dan mengimplementasikan
requirement yang ditentukan.
Dibandingkan
dengan abstract class, abstract class hanya bisa digunakan di class paling atas
‘top-hierarchy’ sedangkan interface dapat digunakan di setiap class yang
diinginkan (setiap class dapat mengimplementasikan lebih dari satu interface).
Perbedaan Interface dan
Abstract Class
Programmer sering merasa bingung
dalam mebedakan Interface dan Abstract Class. Beberapa perbedaannya adalah:
- Cara penggunaan Abstract Class adalah diturunkan, sedangkan cara
penggunaan Interface adalah diimplementasikan.
- Pada C# lambang untuk menurunkan class dan menggunakan interfaces
sama-sama menggunakan tanda “:” (titik dua). Tetapi untuk membedakan
biasanya nama interface diawali dengan huruf I di depan misal:
IEnumerable, IDisposable, dll.
- Sebuah class hanya dapat diturunkan dari satu abstract class tapi
dapat menggunakan lebih dari satu interfaces.
- Method dan member variable pada abstract class boleh sudah ada
isinya, sedangkan pada interfaces semua belum ada implementasinya.
- Pada Abstract Class semua method / member variable yang abstract
harus diimplementasikan di class turunannya.
- Pada Interface semua member variable dan method harus
diimplementasikan di class yang menggunakan interface tersebut.
- Access Modifier pada method dan member variable di Interface secara
implisit adalah public.
1: interface IStorable {
2: void Read();
3: void Write();
4: int Status { get; set; }
5: }
6:
7: public class Document : IStorable {
8: private int status = 0;
9:
10: public Document(string s) {
11: Console.WriteLine("Create : {0}", s);
12: }
13:
14: public void Read() {
15: Console.WriteLine("Mengimplementasikan method Read dari IStorable");
16: }
17:
18: public void Write() {
19: Console.WriteLine("Mengimplementasikan method Write dari IStorable");
20: }
21:
22: public int Status {
23: get { return this.status; }
24: set { this.status = value; }
25: }
26: }
27:
28: class LatSimpleInterface {
29: static void Main(string[] args) {
30: Document doc = new Document("New Document");
31: doc.Read();
32: doc.Write();
33: doc.Status = 1;
34: Console.WriteLine("Document status : {0}", doc.Status);
35: }
36: }
E.Method Overloading
method overloading, untuk mengetahui arti dari istilah ini maka bisa melihat terlebih
dahulu baris kode di bawah ini :
lingkaran.cs
using system;
using system.collections.generic;
using system.linq;
using system.text;
using sts.common.math;
namespace sts.console
{
public class lingkaran : curvemath
{
public override void hitungluas()
{
system.console.writeline(3.14 * jejari * jejari);
}
/// <summary>
/// tidak ada parameter
/// </summary>
public void tambah()
{
system.console.writeline(3 + 10);
}
/// <summary>
/// terdapat satu parameter
/// </summary>
public void tambah(int bilangan)
{
system.console.writeline(3 + bilangan);
}
/// <summary>
/// terdapat dua parameter dengan tipe data int
/// </summary>
public void tambah(int bilangan1, int bilangan2)
{
system.console.writeline(bilangan1 + bilangan2);
}
/// <summary>
/// terdapat dua parameter dengan tipe data double
/// </summary>
public void tambah(double bilangan1, double bilangan2)
{
system.console.writeline(bilangan1 + bilangan2);
}
}
}
pada kode di atas dapat dilihat terdapat tiga method dengan nama yang sama yaitu tambah
perbedaan tiap method adalah dilihat dari jumlah parameter dan tipe data yang digunakan.
perbedaan Private, public, dan protected
Identifier adalah suatu pengenal atau pengidentifikasi yang
kita deklarasikan agar kompiler dapat mengenalinya. Identifier sendiri dapat
berupa nama variabel, konstanta fungsi, kelas, template maupun
namespace.biasanya identifier ini terdiri dari 3 bentuk,yaitu privat public dan
protected.
·
Public: anggota pribadi dari kelas
dasar hanya dapat diakses oleh anggota yang kelas dasar.
·
Private: anggota publik dari kelas
dasar dapat diakses oleh anggota yang kelas dasar,anggota
kelas turunan serta anggota yang berada di luar kelas
dasar dan kelas turunan.
·
Protected: anggota dilindungi dari kelas
dasar dapat diakses oleh anggota kelas dasarserta anggota
kelas turunan.
Berikut adalah perbedaan dari ke-3 identifier tersebut :
Perbedaan public, private,
protected, dan tanpa penentu akses pada variabel :
·
Public : variabel dapat di akses
pada semua kelas yang menggunakan kelas yang berisi variabel tersebut.
·
Private : hanya dapat diakses
oleh metode2 dalam kelas itu sendiri.
·
Protected : variabel instan dapat
diakses pada kelas sendiri dan subkelasnya.
·
Tanpa penentu akses : variabel dapat diakses
oleh kelas yang berada dalam package yang sama.
Perbedaan public, private,
protected, dan tanpa penentu akses pada metode :
·
Private : hanya dapat diakses
pada metode2 dalam kelas yang sama.
·
Protected : metode dapat diakses
pada kelas sendiri dan pada subkelasnya.
·
Tanpa penentu akses : metode hanya dapat
diakses oleh metode dalam kelas itu sendiri ataupun metode pada kelas lain yang
terletak pada package yang sama.
Begitulah definisi dan perbedaan dari ketiga idebtifier
yang umum di gunakan,private,public dan protected.selanjutnya untuk membuat
nama identifier perlu memperhatikan hal-hal berikut:
·
Membedakan huruf besar dan huruf kecil (case sensitive).
·
Nama identifier bisa terdiri dari satu atau beberapa
karakter yang terdiri dari angka (0 – 9), huruf (a –z, a – z), dollar ($),
garis-bawah/underscore(_).
·
Penamaan identifier harus dimulai dengan huruf,
underscore(_), atau karakter dollar ($). Tidak boleh dimulai dengan angka.
·
Simbol-simbol operator seperti (*), (+), (/), (-) tidak
bisa digunakan.
·
Dalam penamaan identifier tidak boleh menggunakan spasi.
·
Tidak diperbolehkan menggunakan kata-kata keyword dalam
bahasa pemrograman (misalnya: public, class, static, dsb).
·
V panjang nama identifier tidak dibatasi.
Beberapa contoh penamaan
identifier yang benar:
·
hello
·
$hello
·
Helloworld
·
Classprogram
·
Nama_mahasiswa
Beberapa contoh penamaan
identifier yang salah:
·
1nama
·
/nomorinduk
·
Nomor induk
8. Membuat program untuk menghitung nilai kuliah mahasiswa
Membuat program menghitung nilai mata
kuliah dan konversinya
//programnya
Classprogram
{
Staticvoid main(string[]
args)
{
Double ntugas, nuts, nparts, nuas, nakhir;
Console.writeline("menghitung
nilai kuliah mahasiswa");
Console.writeline("--------------------------------------------");
Console.write("nilai
patisipasi = ");
nparts = double.parse(console.readline());
Console.write("nilai
uts = ");
nuts = double.parse(console.readline());
Console.write("nilai
tugas = ");
ntugas = double.parse(console.readline());
Console.write("nilai
uas = ");
nuas = double.parse(console.readline());
Console.writeline("------------------------------------");
nakhir =
hitungnilaiakhir(nparts,ntugas,nuts,nuas);
Console.write("nilai
akhir = " + nakhir);
Console.writeline();
Console.write("nilai
huruf = " +
konversihuruf(nakhir));
Console.readkey();
Publicstaticdouble hitungnilaiakhir(double np, double nt,
double nuts, double
nuas)
{
Return 0.3 * np + 0.2 * nt + 0.3 * nuas + 0.2
* nuts;
}
Publicstaticstring konversihuruf(double
na)
{
String nh = "" ;
If (na > 85 && na <= 100)
{
nh = "a";
}
If (na > 76 && na <= 85)
{
nh = "a-";
}
If (na > 75 && na <= 80)
{
nh = "b+";
}
If(na > 70 && na <= 75)
{
nh = "b";
}
If (na > 66 && na <= 70)
{
nh = "b-";
}
If (na > 60 && na <= 65)
{
nh = "c+";
}
If (na > 56 && na <= 60)
{
nh = "c";
}
If (na > 50 && na <= 55)
{
nh = "c-";
}
If (na > 40 && na <= 50)
{
nh = "d";
}
If (na <= 40)
{
nh = "e";
}
Return nh;
}
0 komentar:
Posting Komentar