Monday, February 17, 2020

Early Binding dan Late Binding

Early Binding atau dikenal juga dengan Static Binding merupakan sebuah kondisi dimana compiler tahu tipe data sebuah objek, method apa saja yang di miliki dan atribut apa saja yang di miliki oleh objek tersebut. Early binding dapat kita lihat pada intelisense, pada saat kita menulis nama objek, intelisense memberikan rekomendasi nama method atau atribut yang di miliki objek tersebut, dengan kata lain compiler tahu mengenai objek tersebut meskipun belum melakukan compile. 

contoh :
ComboBox cboItems;

Late Binding  atau juga dikenal dengan dynamic binding merupakan sebuah kondisi dimana compiler tidak tahu mengenai tipe data, atribut atau method yang di miliki object terkait. Sehingga ketika kita menuliskan objek tersebut, intelisense tidak akan memberikan rekomendasi nama method/ atribut yang dimiliki object tersebut karena compiler tidak mengetahui nya. Compiler akan mengetahui nya setelah program di compile. 

contoh :
Object object;
dynamic dynamicObject;

Dari sisi performa Early binding lebih unggul karena compiler sudah tahu mengenai object yang akan di compile, sementara di dalam late binding pada saat proses kompilasi, compiler akan mencari tahu terlebih dahulu tipe data yang sesuai dengan object dynamic yang telah di definisikan. 
Share:

Sunday, February 16, 2020

Abstract Class, Abstract Method dan Virtual Method di dalam C#

1. Abstract Class 
Adalah kelas yang menggambarkan fungsionalitas dari method - method yang ada di dalam nya. Method di dalam Abstract class hanya menggambarkan Nama Method, Tipe data Nilai Kembalian, dan Parameter nya ...  tidak boleh ada implementasi di dalam method nya, hanya itu saja. 
Jadi inti nya abstract class hanya ngasi tau nama method, tipe keluaran, sama tipe input ... udah.

2. Abstract Method
Adalah method yang ada di dalam abstract class. Sifat dari abstract method memaksa, dengan kata lain harus di implementasikan di kelas yang menjadi anak nya, kalau ngga di implementasikan/ ngga ada di kelas anak nya maka akan muncul error. ingat ya, sifat nya memaksa. Selain itu abstract method hanya bisa di definisikan di dalam abstract class saja.

3. Virtual Method
Berbeda dengan abstract method, Virtual method tidak bersifat memaksakita bisa menambahkan implementasi code di dalam nya, dan bisa di definisikan di dalam abstract class atau class biasa. 

Berikut contoh penggambaran ketiga nya di dalam code C#

public abstract class Base
{
     public virtual void Test()
     {
         Console.WriteLine("This is the base version of the virtual method");
     }
     public abstract string ToString();
     public abstract bool Equals(object obj);
}

public class Derived : Base
{
     public override void Test()
     {
         Console.WriteLine("This is the derived version of the virtual                 method");
     }
     public abstract override string ToString(){
          //Implementasi code
     };
     public abstract override bool Equals(object obj){
          //implementasi code
     };
}

Share:

Saturday, February 15, 2020

Pengertian Interface Dalam Pemrograman (Bukan User Interface)

Oke sekali lagi, berawal dari ketertarikan saya untuk mempelajari design pattern, saya lihat ada sesuatu yang banyak dan sering terlibat didalam nya selain coupling (cek article sebelumnya tentang Pengertian Coupling Dan Cohesin serta Tipe Coupling pada Pemrograman), yaitu interface. Jadi, apa itu interface? saya akan coba jelaskan tentang interface dari sudut pandang saya dan mengimplementasikan nya menggunakan C# (karena saya programmer C#). Oke ... ini dia.

Oke, jadi dulu pada saat saya mendengar kata 'interface' yang ada di benak saya yaitu sebuah tampilan, seperti misalnya tampilan aplikasi. Memang secara bahasa interface sendiri memiliki arti 'permukaan' namun pokok bahasan kita kali ini bukan mengenai tampilan ('user interface') melainkan interface yang ada di dalam OOP.

Sebelum masuk ke penjelasan tentang interface dari sudut pandang saya, tentu nya saya harus memaparkan pengertian baku dari interface itu sendiri. Oke, saya ambil pengertian ini dari sumber yang sepertinya kredibel ... "An interface is a description of the actions that an object can do". Jadi dalam bahasa indonesia bunyi nya mungkin seperti ini, Interface adalah deskripsi dari banyak aksi yang dapat dilakukan di dalam sebuah object... nangkep inti nya? kurang lebih seperti itu. Saya akan coba mendetailkan maksud dari kalimat tersebut dari sudut pandang saya.

Untuk mencoba menjelaskan lebih jauh tentang interface saya akan ambil contoh di kehidupan nyata, saya akan ambil contoh dalam sebuah mobil. Sebuah mobil mempunyai pedal gas, rem, stir dan lain nya. Kita tahu fungsi masing bagian tersebut seperti pedal gas untuk menjalan kan mobil dan menambah kecepatan, rem untuk menghentikan mobil, stir untuk membelokkan mobil. Naah, sekarang saya tanya apakah anda tau hal teknis yang terjadi pada saat kita membelokkan stir? atau saat kita menginjak pedal gas atau rem? kita tidak tahu! dan tidak perlu tahu! yang kita harus tahu adalah kegunaan dari bagian - bagian tersebut. Jadi, dalam kasus ini pedal gas, rem, dan stir adalah interface. Kalau digambarkan kurang lebih seperti ini,

Sumber Gambar : Pribadi


Sekian pengertian interface dari sudut pandang saya, semoga dapat bermanfaat. 

sumber :
https://www.cs.utah.edu/~germain/PPS/Topics/interfaces.html


Share:

Synchronous vs Asynchronous Programming

Berdasar dari rasa penasaran saya yang suka comot comot code C# dari stackoverflow, ada beberapa syntax yang buat saya penasaran seperti Task, Async, dan Await. Ketiga syntax itu punya satu tujuan, yaitu menerapkan asynchronous programming. 

Inti dari asynchronous programming yaitu menghindari blocking proses, khusus nya proses yang membutuhkan waktu lama. Saya ambil contoh dalam aplikasi desktop menghitung jumlah karakter. 

Misal Dalam satu kasus sistem membutuhkan waktu lebih dari 5 detik untuk menghitung ribuan karakter, Dalam konsep synchronous programming dalam waktu lima detik tersebut kita tidak dapat melakukan apapun seperti drag jendela aplikasi, resize jendela aplikasi, dan lain lain karena proses terblok atau tertahan 5 detik untuk menghitung jumlah karakter.

Dalam konsep asynchronous programming, hal ini bisa di hindari karena proses mengitung karakter dilakukan di thread yang berbeda (keluar dari thread utama) sehingga pada saat thread tersebut sibuk menghitung karakter kita dapat melakukan apapun di thread utama seperti drag jendela aplikasi, resize jendela aplikasi, dll. 

Dalam beberapa kasusu setiap thread di luar thread utama akan kembali ke thread utama setelah proses yang dilakukan selesai (Misal, thread utama membutuhkan nilai kembalian dari thread lain) , dari hal ini akan terjadi perbedaan waktu eksekusi dimana mungkin thread utama lebih dulu selesai atau thread kedua yang lebih dulu selesai, untuk menggabungkan nya kita harus menunggu proses satu sama lain dan menggabungkan nya ke thread utama, di dalam c# kita dapat melakukan nya dengan await

Pembahasan ketiga syntax ini : Task, Async, dan Await. Saya akan coba bahas di postingan berikut nya...
Share:

Monday, September 2, 2019

GoJek terlambat membuat saya jatuh cinta

Oke tulisan ini bukan tentang cinta - cintaan ya, tulisan ini merupakan curahan pemikiran saya sebagai seorang pelanggan ojek online. Tulisan ini tidak bermaksud menjatuhkan atau mendiskreditkan pihak - pihak terkait, tulisan ini pure curahan saya aja terkait pengalaman saya ber ojol ria. 

Kisah di mulai ketika saya pertama kali kerja di jakarta pada akhir tahun 2016, sebenarnya ojek online ini sudah populer jauh sebelum itu, namun di Bandung masih belum terasa hype nya dan masih banyak ojek pangkalan yang menentang adanya ojek online. 

Balik ke saya yang di jakarta, pertama saya di jakarta saya tidak terlalu peduli dengan ojek online karena jarang sekali kemana - mana dan kemana - mana naik busway KRL udah cukup. Namun seiring dengan berjalan nya waktu, keperluan akan ojek online tidak dapat di hindari. Saya banyak menemui situasi dimana ojek online diperlukan, selain itu waktu itu mereka (perusahaan OJOL) sedang gencar - gencar nya ngasih promo.

Dari situ saya install aplikasi ojek online. Ada dua pilihan, Gojek dan Grab (Uber belum masuk waktu itu). Saya sebagai anak bangsa tentu memilih Gojek yang merupakan karya anak bangsa (nama perusahaan nya aja PT Aplikasi Karya Anak Bangsa). Install install install, masuk lah ke bagian registrasi, naaah di sini saya lupa detail nya tapi yang saya inget saya terkendala di registrasi ini entah stuck di aplikasi nya entah perihal verifikasi nya entahlah, lupa saya udah lama soal nya ... intinya saya mengalami kesulitan dan aplikasi gojek nya ga bisa di pake. 

Saya ngga ribet cari solusi kayak ngehubungin atau kirim email ke CS nya gojek, karena waktu itu Gojek bukan satu satu nya aplikasi sejenis. Saya coba install aplikasi ojol bikinan negara tetangga, Grab. Install install install, masuk ke bagian registrasi, isi isi data, done aplikasi langsung bisa di pake. Saya ngga inget detail nya, tapi kemudahan nya terasa banget. Di sinilah titik dimana saya menjadi pengguna ojol yang sering menggunakan Grab sampe sekarang dan jadi platinum user nya, meskipun pada akhir nya saya bisa juga registrasi di GoJek dan menjadi pengguna Gojek juga di beberapa situasi. Namun kesan pertama yang di berikan Grab sangat berarti bagi saya (sori lebay).

Okeee sampe di sini dulu, tulisan ini akan di update atau di lanjut di postingan selanjut nya ... 



Share:

Friday, August 9, 2019

5 Gitar Instrumental Rock Keren yang ada di Youtube

Banyak banget gitaris handal kayak Steve Vai, Joe Satriani, John Pettrucci, dan lain - lain. Mereka terkenal, lagu nya juga enak - enak, skill gausah di tanya lagi.

Di postingan ini, saya ga akan bahas lagu - lagu mereka. Saya yakin banyak orang udah tau lagu - lagu mereka, mungkin di postingan lain sepertinya. Saya ingin menunjukan beberapa lagu, tepat nya lima lagu instrumen gitar melodic yang menurut saya enak dari youtube. Tanpa basa basi, selamat mendengarkan. 

1. Sixto sounds, Steppo & Zircon - The passing of the blue crown


lagu ini merupakan versi remix dari lagu tema megaman 3, bisa cek disini.

2. Robert Spurling - Overcome





3. Robert Spurling - Falling Behind


4. å½©éŸ³ - XI-ON - Kaze no Junkan ~ Wind Tour



5. a2c - Crying Moon



Gimana, gimana? enak? tuliskan pendapat kalian atau rekomendasi lagu - lagu sejenis yang menurut kalian enak di kolom komentar ya. 





Share:

Wednesday, July 3, 2019

K2 Administrator Account dan K2 Service Account

Di dalam K2 ada dua akun yang di definisikan dalam konfigurasi
  1. Admin Account 
  2. Service Account

Admin account adalah akun admin untuk akses semua fitur k2
Service Account adalah akun untuk keperluan akses koneksi service - service k2 

Admin account & service account bisa di setting di k2 blackpearl setup manager.

Contoh koneksi K2 menggunakan service account.
Pada bagian connection string bagian Integrated, jika di isi true maka username dan password akan mengambil dari sistem yang sudah di definisikan di configuration manager. Jika false, maka kita yang define sendiri. 


contoh connection string nya: 
Integrated=False;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=True;Host=localhost;Port=5252;WindowsDomain=domain;UserID=akun_admin;Password=password

Melihat Service Account mana yang sedang di gunakan

  1. Masuk ke server aplikasi
  2. masuk ke services.msc
  3. cari k2 blackpearl server
  4. klik kanan properties
  5. pilih tab Log On

Problem terkait : 

  1. Server is not configured for windows authentication
problem ini biasanya di sebabkan karena Service Account yang terdaftar di configuration manager ada problem. Coba configure ulang setup manager nya. kalau masih tidak bisa pakai saja Integrated=False dan definisikan sendiri username dan password di connection string nya, seperti contoh di atas.

  1. User ... does not have Administrator rights.
Problem ini terjadi karena K2 Administrator Account nya salah, ganti dengan akun K2 Administrator yang sesuai menggunakan setup manager
Share:

Monday, June 24, 2019

Cara shrink database file SQL Server

Oke, karena sering dapet keluhan terkait disk server yang membengkak, banyak cara agar size nya bisa berkurang. Salah satu nya nge shrink database file nya SQL Server. 

Tanpa basa - basi lagi langsung saja kita terjun ke tata cara nya :

1. Cek size dari database file yang ada
select name as logical_name, (size*8)/1024 sizeMB from sys.master_files 

2. Shrink file database nya!
USE [Nama_DB]

GO
ALTER DATABASE [Nama_DB]

SET RECOVERY SIMPLE WITH NO_WAIT;

GO

DBCC SHRINKFILE('Nama_file' , 1);  --Nama_file bisa di dapat dari hasil query sebelumnya. 

GO

ALTER DATABASE [Nama_DB]

SET RECOVERY FULL WITH NO_WAIT;

GO


Done...

Catatan : di tulisan kali ini saya hanya membahas cara shrink nya saja, terkait efek samping, kegunaan, pengertian shrink itu sendiri bisa di cari di google. Atau mungkin saya bahas di postingan berbeda (mungkin, lain waktu, entah kapan). Untuk cari aman, biasanya saya cuman melakukan shrink ke file - file 'Log' nya aja,  karena belum tau efek samping nya. 

silahkan tinggalkan komentar, CMIIW jika ada yang kurang tepat dari postingan ini. 

Selamat bekerja ...
Share:

Friday, June 7, 2019

Entity Framework vs Dapper siapa yang lebih enak?

Pada saat membuat aplikasi menggunakan .NET terdapat beberapa pertimbagan ORM mana yang mau di pakai. Apakah ORM yang cepat dan efisien tapi minim fitur? atau ORM yang dengan kecepatan sedikit lebih lambat tapi memiliki fitur lengkap? hmmm ...

Dalam artikel ini saya akan membandingkan dua ORM yang biasa digunakan di dalam pengembangan apliaksi menggunakan .NET yaitu Dapper dan Entity Framework.

Sebelum kita mulai berikut pengertian dari ORM. Secara sederhana ORM (Object Relational Mapping) adalah sebuah layer di dalam pemrograman yang menjembatani/ memetakan database dengan object di dalam aplikasi.


Oke kita mulai perbandingan antara EF dengan Dapper

1. Entity Framework

Entity Framework adalah framework buatan microsoft. EF memberikan kemudahan bagi developer seperti men generate table dari class yang dibuat, men generate fungsi CRUD dan lain lain.

Berikut kelebihan dan kekurangan dari EF.

Kelebihan

  • Memberikan fitur generate code secara otomatis
  • Memberikan fitur desain secara visual model dan mapping object
  • Support LINQ (bahasa untuk query query an bikinan microsoft juga)
  • Grrratis (sudah include untuk versi .NET 3.5 SP1 keatas)
Kekurangan
  • Keterbatasan modifikasi, karena code dan query sudah di generate
  • Jika ada perubahan skema di dalam database, skema di EF juga harus di update
  • Kurang cocok untuk domain model/ aplikasi yang besar
  • Lazy Loading (silahkan di gugel)
2. Dapper

Dapper adalah ORM yang dikembangkan secara open source. Jika di kategorikan, dapper masuk kedalam kategori Micro ORM. Micro ORM adalah ORM versi lite dengan versi dasar seperlunya yang berorientasi pada performa. Dapper memiliki julukan "King Of Micro ORM" dengan performa yang dapat diandalkan. 

Berikut kelebihan dan kekurangan dari Dapper 

Kelebihan 
  • Kemudahan merubah hasil query menjadi object
  • Cepat dan efisien
  • Kemudahan eksekusi query
  • Grrratis (Open source)
Kekurangan
  • Tidak men generate class model ( harus bikin sendiri )
  • Tidak men generate query ( harus bikin sendiri )
  • Tidak dapat menelusuri object dan perubahan nya ( salah satu fitur full ORM )

Kesimpulan
Dari pemaparan di atas EF dan Dapper memiliki tempat nya masing - masing tergantung dari kepentingan dan keperluan dari developer. Entah itu EF dengan kecepatan development nya yang memberikan kemudahan bagi developer dengan men generate ini dan itu? atau Dapper dengan kecepatan query nya yang dapat diandalkan tapi beberapa bagian harus bikin sendiri? It's up to our need sebagai developer.

Namun preferensi pribadi saya, saya lebih memilih dapper dengan performa query nya meskipun dalam beberapa kasus Full ORM bisa lebih cepat karena ada fitur cache di dalam nya, namun hal itu hanya berlaku untuk pemanggilan objek yang sama saja. Kekurangan nya yang tidak memberikan fitur "Generate" justru menurut saya merupakan kelebihan dimana kebebasan modifikasi ada di tangan kita sebagai developer. Bagaimana menurut anda? manakah yang lebih gurih? silahkan tinggalkan komentar ... 


Share:

Monday, March 25, 2019

Hal Dasar Yang Perlu Diketahui dalam React JS

  1. Component/ Functional component
Component adalah method/ perilaku yang merepresentasikan bagian dari web misal textbox, label, radiobutton, etc. React di tulis di dalam tag script denga type "text/babel". Berikut contoh penulisan component :

<script type="text/babel">
function OurFirstComponent() {
return (
// Code that represents the UI element goes here
);
}
</script>

atau dapat di tulis juga seperti ini

const OurFirstComponent = () => {
return (
// Stuff to make this component goes here
);
}

  1. JSX
Selain menggunakan HTML Rect juga dapat menggunakan JSX. JSX merupakan script HTML yang di tuliskan di dalam script javascript, berikut contoh nya : 

<script type="text/babel">
function OurFirstComponent() {
return (
<h1>Hello, I am a React Component!</h1>
);
}
</script>

Note : karena "class" merupakan reserved word di javascript jadi kita harus mengganti atribut tag "class" html menjadi ClassName di JSX.

  1. ReactDOM
ReactDOM merupakan bagian dari react JS yang bertugas untuk melakukan render JSX ke halam HTML. berikut contoh nya : 
<script type="text/babel">
function OurFirstComponent() {
return (
<h1>Hello, I am a React Component!</h1>
);
}
const placeWeWantToPutComponent = document.getElementById('hook'); //hook adalah id dari tag
ReactDOM.render(OurFirstComponent(), placeWeWantToPutComponent);
</script>

Atau kita dapat melakukan nya seperti ini : 

ReactDOM.render(<OurFirstComponent />, placeWeWantToPutComponent);

  1. Component di dalam Component
Kita dapat memanggil component di dalam component, contoh : 
<script type="text/babel">
function OurFirstComponent() {
return (
<h1>I am the child!</h1>
);
}
function Container() {
return (
<div>
<h1>I am the parent!</h1>
<OurFirstComponent />
</div>
);
}
const placeWeWantToPutComponent = document.getElementById('hook');
ReactDOM.render(<Container />, placeWeWantToPutComponent);
</script>

  1. Class Component
Jika sebelum nya component bisa di katakan sebagai method/function, React menyediakan penggunaan class di dalam javascript sebagai Component, yang di namakan Class Component. Berikut contoh penggunaan nya :

class Container extends React.Component {
render() {
return (
<div>
<h1>I am the parent!</h1>
<OurFirstComponent />
</div>
);
}
}
const placeWeWantToPutComponent = document.getElementById('hook');
ReactDOM.render(<Container />, placeWeWantToPutComponent);

Class component harus memiliki function render() untuk mengembalikan nilai JSX yang ada di dalam nya. Sama seperti Component/ Functional Component, Class Component dapat di panggil menggunakan notasi seperti ini : <SebuahClassComponent /> 

Note ; Jika masih isa pakai functional component usahakan jangan pakai class component karena agak sulit dibaca (kata author nya). 

  1. Javascript di dalam JSX
Berikut cara memanggil javascript di dalam JSX : 

class Container extends React.Component {
render() {
const greeting = 'I am a string!';
return (
<div>
<h1>{ greeting }</h1>
<OurFirstComponent />
</div>
);
}
}

Contoh lain nya : 

class Container extends React.Component {
render() {
const addNumbers = (num1, num2) => {
return num1 + num2;
};
return (
<div>
<h1>The sum is: { addNumbers(1, 2) }</h1>
<OurFirstComponent />
</div>
);
}
}

  1. State 
Class Component dapat menyimpan informasi tentang informasi yang sedang terjadi, informasi tersebut di sebut dengan state. Berikut contoh penggunaan nya : 

class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
render() {
return (
);
}
}

dari code di atas state di isi object dengan key isMusicPlaying dan value false. 

Sifat pendefinisian constructor nya bersifat baku, harus seperti itu :  
constructor(props) {
super(props);
}

Note : props adalah informasi yang di bagikan dari parent ke child.

  1. Event Handler
class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
handleClick(event) {
if (event.state.isMusicPlaying) {
event.setState({ isMusicPlaying: false });
} else {
event.setState({ isMusicPlaying: true });
}
};
render() {
let status = this.state.isMusicPlaying
? 'Playing :)'
: 'Not playing :(';
return (
<div>
<h1 onClick={this.handleClick.bind(this)}>{ status }</h1>
</div>
);
}
}

Dari code di atas, pada saat pertama kali dio render(), program akan mengecek apakah state true atau false. Jika true maka "Playing" jika false maka "Not Playing". 

Selanjutnya di dalam bagian JSX, pada tag h1 di tambahkan event listener javascript "onClick". event tersebut diisi dengan method handleClick yang akan mengeksekusi sesuatu jika tag h1 di click. 

Note : sebenar nya di dalam method handleClick parameter event bisa di ganti pakai this aja, jadi ga usah pakai parameter.

  1. Hubungan komunikasi antar Component
Berikut contoh hubungan antara class component dengan component (function) diluar class tersebut : 

class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
handleClick() {
if (this.state.isMusicPlaying) {
this.setState({ isMusicPlaying: false });
} else {
this.setState({ isMusicPlaying: true });
}
};
render() {
return (
<div>
<PlayButton isMusicPlaying={this.state.isMusicPlaying} />
</div>
);
}
}

berikut isi dari function PlayButton
function PlayButton(props) {
const className = props.isMusicPlaying ? 'play active' : 'play';
return <a href="#" title="Play video" className={className} />;
}

function PlayButton menerima object yang di passing dari class Containe dimana function PlayButton di panggil.

Selain mempassing informasi, kita juga bisa mempasing function seperti contoh sebagai berikut : 
function PlayButton(props) {
const className = props.isMusicPlaying ? 'play active' : 'play';
return <a onClick={props.onClick} href="#" title="Play video" className={className} />;
}
class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
handleClick() {
if (this.state.isMusicPlaying) {
this.setState({ isMusicPlaying: false });
} else {
this.setState({ isMusicPlaying: true });
}
};
render() {
return (
<div>
<PlayButton
onClick={this.handleClick.bind(this)}
isMusicPlaying={this.state.isMusicPlaying}
/>
</div>
);
}
}



dari code di atas, dapat kita lihat di bagian render() dimana Component PlayButton di panggil, di beri dua parameter yaitu onClick yang berupa function dan isMusicPlaying. Keduanya di bugnkus menjadi props pada saat di terima di Component PlayButton.

Tulisan ini merupakan penyampaian versi saya dari link berikut : https://medium.freecodecamp.org/everything-you-need-to-know-about-react-eaedf53238c4

silahkan di kunjungi. bagus, mudah di pahami. 
 
Share:

Wednesday, May 16, 2018

Istilah di dalam Obligasi

Istilah - istilah di dalam obligasi

Fixed Coupon Bonds. Obligasi dengan tingkat kupon bunga yang telah ditetapkan sebelum masa penawaran di pasar perdana dan akan dibayarkan secara periodik. 
Convertible Bonds. Obligasi yang memberikan hak kepada pemegang obligasi untuk mengkonversikan obligasi tersebut ke dalam sejumlah saham milik penerbitnya. 
Unsecured Bonds. Obligasi yang tidak dijaminkan dengan kekayaan tertentu tetapi dijamin dengan kekayaan penerbitnya secara umum. 
Guaranteed Bonds. Obligasi yang pelunasan bunga dan pokoknya dijamin denan penangguangan dari pihak ketiga. 
Wesel Bayar. Janji tertulis untuk membayar sejumlah uang tertentu pada tanggal tertentu. Muncul akibat dari pembelian, pembiayaan, atau transaksi lainnya.
Zero Coupon Bonds. Obligasi yang tidak melakukan pembayaran bunga secara periodik. Namun, bunga dan pokok dibayarkan sekaligus pada saat jatuh tempo. 
Exchangeable Bonds. Obligasi yang memberikan hak kepada pemegang obligasi untuk menukar saham perusahaan ke dalam sejumlah saham perusahaan afiliasi milik penerbitnya. 
Agio Obligasi. Selisih dari harga jual dan nilai nominal saat obligasi dijual melebihi nilai nominal.
Disagio Obligasi. Selisih antara nilai nominal obligasi dengan harga jual, saat obligasi dijual dibawah nilai nominal.
Callable Bonds. Obligasi yang memberikan hak kepada emiten untuk membeli kembali obligasi pada harga tertentu sepanjang umur obligasi tersebut. 
Coupon Bonds. Obligasi dengan kupon yang dapat diuangkan secara periodik sesuai dengan ketentuan penerbitnya. 
Mortage bonds. Obligasi yang pelunasan bunga dan pokoknya dijamin dengan agunan hipotik atas properti atau asset tetap. 
Share: