Anda di halaman 1dari 7

Kelompok 4:

Adam Gumilar - 1401095065 Eldy Agustius Hermawan - 1401095216


Jane Putri Kartanegara - 1401096074 Robby -1401093394

1. Why does Java not need a “use” clause, such as in Ada ?


Jawab :
Karena Java telah memiliki clause lain yang memiliki kegunaan dan makna yang sama
dengan use clause juga with clause pada Ada, yaitu import. Selain use, pada Ada,
harus digunakan with terlebih dahulu Pada program C++, use dianalogikan dengan
penggunaan #include<stdafx.h>. Sedangkan with dianalogikan dengan
penggunaan using namespace std; Jika pada program telah terdapat using
namespace std; , maka untuk melakukan perintah cetak, programmer hanya perlu
menuliskan cout>> . Tetapi jika pada program tidak menggunakan using namespace
std; , programmer perlu menuliskan std::cout>>. Begitu juga dengan use dan
with pada Ada. Terdapat dua kondisi :
- Jika program menggunakan with clause dan use clause
Contoh : mengakses names Put pada namespace Ada.Text_IO, perintah hanya
perlu dideklarasikan sebagai berikut : Put pada rancangan kode program
- Jika program hanya menggunakan with clause tetapi tidak menggunakan use
clause
Contoh : untuk mengakses perintah Put pada namespace Ada.Text_IO,
perintah perlu dideklarasikan sebagai berikut : Ada.Text.IO.Put
Sedangkan import memiliki dua jenis, yaitu :
1. Wildcard import : membuat seluruh perintah-perintah yang ada di dalam package yang
diimport tidak perlu mengadakan kualifikasi atau memberikan awalan pada perintah
yang dituliskan
Contoh:
import java.util.*; dianalogikan dengan pengunaan with di Ada.

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.

4. Describe a situation where a C# struct is preferable to a C# class.


Jawab: Perbedaan struct dan class terdapat pada sifatnya. Struct bersifat public sedangkan
class bersifat private. Jadi, pada penggunaan class terdapat penyembunyian data dan
informasi (information hiding). Struct berisi nilai dari sebuah data, sedangkan class berisi
penunjuk atau referensi nilai pada data. Struct membuat copy dari nilai tersebut, sehingga
jika kita mengubah nilai dari salah satu data pada struct, maka nilai yang lainnya tidak akan
berubah. Berbeda halnya dengan class. Jika kita mengubah nilai dari salah satu data pada
class, maka data yang lainnya akan berubah karena telah direferensikan. Keadaan yang
paling menguntungkan dengan pemakaian struct dibandingkan dengan penggunaan class
adalah saat kita ingin membuat sebuah program yang tidak kompleks, yaitu program
berstruktur data sederhana yang memiliki data-data yang bukan dimaksudkan untuk
dimodifikasi.

5.The namespace of the C# standard library, System, is not implicitly available to C#


programs. Do you think this is a good idea? Defend your answer.
Jawab: Menurut pemahaman kelompok kami, ini merupakan ide yang baik. Pada C#,
programmer dapat membuat namespace sendiri selain namespace System yang telah ada
dan berlaku bila dideklarasikan secara eksplisit dalam program C#. Misalkan seorang
programmer ingin membuat class bernama Console lalu disimpan pada namespace yang
telah dibuatnya. Pada saat programmer memanggil class Console, program akan
bingung / mengalami clash dalam memilih namespace mana yang dimaksud programmer,
apakah namespace System atau namespace yang telah dibuat programmer. Karena di
dalam namespace System, juga ada class yang bernama Console. Jadi, penggunaan
namespace System secara tidak implisit bertujuan untuk mencegah terjadinya clash
karena program menjadi lebih spesifik dan partikular dalam mengetahui namespace nama
yang dimaksud programmer. Berbeda dengan bahasa pemrograman Java yang secara
implisit dapat mengimpor package Java itu sendiri yaitu java.lang. Sehingga
programmer tidak perlu melakukan import java.lang.* hanya untuk melakukan
perintah cetak, System.out.println (“”);
6.Write an abstract data type for queue whose elements include both a 20-character string
and an integer priority. This queue must have the following methods: enqueue,which takes
a string and an integer as parameters,dequeue,which returns the string from the queue that
has the highest priority, and empty. The queue is not to be maintained in priority order of its
elements, so the dequeue operation must always search the whole queue.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct data{
char kata[21];
int angka;
struct data *next,*prev;
}*head,*tail,*curr,*temp;

void pushtail(char b[],int a)


{
curr=(struct data*)malloc(sizeof(struct data));
curr->angka=a;
strcpy(curr->kata,b);
curr->next=curr->prev=NULL;

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 :

2. From where can Java objects be allocated ?


Jawab :
Class.

Contoh :
Class Kotak{
double panjang;
double lebar;
double tinggi;
}

Class DemoReferensi1{
public static void main(String[] args){
double volume1, volume2;

Kotak k1,k2;

k1 = new Kotak();//Menginisialisasi dan


mengalokasikan referensi ke dalam objek k;
k2 = k1;
}
}

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.

4. How are Java objects deallocated ?


Jawab : Programmer tidak perlu mendealokasikan object karena secara otomatis JVM (Java
Virtual Machine) akan mendealokasikan sendiri object tersebut dengan garbage collection.
Sebenarnya dealokasi objek di OOP itu dapat dilakukan di saat runtime ataupun tempat
dimana objek dialokasikan.
5. Are all Java subclasses subtypes ?
Jawab : Tidak. Tidak semua subclass subtype. Subtipe juga bisa dibentuk dengan
menggunakan interface, menghubungkan jenis yang tidak memiliki hubungan warisan.

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.

12. Explain one disadvantage of inheritance


Jawab :
Meningkatnya kemungkinan dari penggunaan ulang yang menghasilkan ketergantungan
antar kelas dalam inheritance hirarkis. Inheritance kurang dinamis
karena kita harus membuat objek untuk stiap class nya
tidak seperti polymorpism yang cukup mengunakan 1 objek untuk setiap classnya

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.

Anda mungkin juga menyukai