2. Specific import : memanggil perintah tertentu saja yang ada di dalam package sehingga
perintah yang akan dipanggil perlu dikualifikasikan atau diberikan awalan terlebih
dahulu.
Contoh :
import java.util.scanner; dianalogikan dengan pengunaan with dan use di
Ada language
2. Some software engineers believe that all imported entities should be qualified by the
name of the exporting program unit. Do you agree ? Support your answer.
Jawab: Iya. Hal ini bertujuan agar program dapat mengetahui unit program apa yang harus
dipanggil untuk mengimpor entitas tersebut. Sehingga program dapat secara spesifik dan
tidak mengalami ambiguitas dalam membaca rancangan program.
3. Suppose someone designed a stack abstract data type in which the function top returned
an access path(or pointer) rather than returning a copy of the top element. This is not a true
data abstraction. Why? Give an example that illustrates the problem.
Jawab: Karena sebuah tipe data abstrak haruslah mengembalikan Output berupa
value(nilai), bukan mengembalikan Output berupa access path/pointer. Bilamana fungsi
top ini mengembalikan access path/pointer, program main dapat mengubah value dari
top element stack itu karena fungsi top ini mereferensikan alamat, bukan nilainya.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct data{
char kata[21];
int angka;
struct data *next,*prev;
}*head,*tail,*curr,*temp;
if(!head)
{
head=tail=curr;
}
else
{
tail->next=curr;
curr->prev=tail;
tail=curr;
}
}
void pop()
{ int y; char z[21];
if(head)
{
if(head==tail)
{
strcpy(z,head->kata);
y=head->angka;
free(head);
head=tail=curr=NULL;
}
else
{
curr=head;
temp=curr->next;
while(temp)
{
if(curr->angka<temp->angka)
{curr=temp;}
temp=temp->next;
}
if(curr==head)
{ strcpy(z,curr->kata); y=curr->angka;
head=curr->next;
free(curr);
head->prev=NULL;
}
else if(curr==tail)
{ strcpy(z,curr->kata); y=curr->angka;
tail=curr->prev;
free(curr);
tail->next=NULL;
}
else
{ strcpy(z,curr->kata); y=curr->angka;
curr->next->prev=curr->prev;
curr->prev->next=curr->next;
free(curr);
}
}
printf("%d %s",y,z);
}
}
void empty()
{
if(!head)
printf("True\n\n");
else
printf("False\n\n");
}
void view()
{
curr=head;
while(curr)
{
printf("%d %s\n",curr->angka,curr->kata);
curr=curr->next;
} getchar();
}
void main()
{
int x;
char nama[21];
int choice;
do{
for(int y=0; y<10; y++)
printf("\n\n");
printf("Menu\n1.Cek
struct(empty)\n2.Push\n3.Pop\n4.Cetak\n5.Exit");
do{printf("\nMasukkan pilihan");
scanf("%d",&choice); fflush(stdin);}while(choice<1
|| choice>5);
if(choice==1)
empty();
else if(choice==2)
{
printf("\nMasukan nama :");
scanf("%s",&nama); fflush(stdin);
printf("\nMasukan angka:");
scanf("%d",&x); fflush(stdin);
pushtail(nama,x);
}
else if(choice==3)
pop();
else
view();
}while(choice!=5);
}
1. How is the type system of Java different from that of C++?
Jawab :
Contoh :
Class Kotak{
double panjang;
double lebar;
double tinggi;
}
Class DemoReferensi1{
public static void main(String[] args){
double volume1, volume2;
Kotak k1,k2;
3. What is boxing ?
Jawab : Boxing adalah proses pengubahan primitive data type/value type (int, char,
double, float ke tipe data object/reference type. Cara kerjanya adalah boxing
membuat kopi dari nilai primitive data type yang semula disimpan secara default pada stack
dan disimpan ke dalam sebuah objek. Dan kopi dari nilai ini ditaruh di dalam heap dan
direferensikan oleh objek. Sehingga jika nilai primitive data type diubah, kopi nilai yang
berada pada objek tidak akan berubah.
10. Explain the two problems with abstract data types that are ameliorated by inheritance.
Jawab:
a. Reuse tipe data abstrak jauh lebih mudah, karena modifikasi jenis yang ada tidak perlu
dilakukan padakode warisan.
b. Dengan tipe data abstrak, semua tipe adalah independen dan berada pada tingkat yang
sama, melarang setiap logis hirarkis tipe dependensi.
11. Describe the categories of changes that a subclass can make to its parent class.
Jawab :
Menambah method sendiri / mengganti method parent (method override) dan menambah
variabel sendiri.
13. Explain the advantages and disadvantages of having all values in language be objects
Jawab : Object Oriented Programming membuat struktur program menjadi jelas dimana
akan membawa pengaruh baik dalam pembuatan Abstract Data Type karena terdapat
penyembunyian informasi tentang unit program itu dan pendeklarasian nama unit program
tersebut yang jelas.
OOP memudahkan untuk mempertahankan dan memodifikasi kode yang ada sebagai objek
baru dan dapat dibuat dengan perbedaan-perbedaan kecil sebagai konsekuensinya
OOP menyediakan kerangka kerja yang baik untuk library kode di mana komponen yang
disediakan tersebut dapat dengan mudah diadaptasi dan dimodifikasi oleh programmer. Hal
ini sangat berguna untuk mengembangkan GUI (Graphical User Interface.
Disadvantage :
- OO sering diberikan melalui media yang tidak sempurna seperti C++ dan Java
[mendiskusikan cacat mereka];
- OO tidak dapat diterapkan karena terdapat banyak ketidakcocokan.