Đề tài So sánh sự giống và khác nhau của C++, C# và Java

Một tiêu bài thu hoạch: so sánh sự giống và khác nhau củ C++, C# và

JAVA ở cá điểm sau:

- Phần chú thích

- Hằng

- Kiểu dữ liệu

- Kiểm tra kiểu,đổi kiểu

- Không gian tên.

- Quản lý cấp phát bộ nhớ.

- Hàm trùng tên.

- Nhập xuất.

pdf10 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 4710 | Lượt tải: 2download
Tóm tắt nội dung Đề tài So sánh sự giống và khác nhau của C++, C# và Java, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ng nhau ở C++,Java, C# 1,7e-308 đến 1,7e+308 
decimal Chỉ có trong C#, với độ chính xác lên đến 28 
số và giá trị thập phân, kích thước 80 bit 
long 
double 
80 Chỉ có trong C++ 1,2e-4932 đến 1,2e+4932 
*Chú ý: 
 Kiểu dữ liểu boolean trong Java và C# khác với C++. Trong C++ ta có thể 
đổi từ kiểu int (long,char, …) sang kiểu boolean va ngược lại. 
b. Sự khác nhau: 
 Dựa trên các kiểu dữ liệu căn bản, mỗi ngôn ngữ lập trình cung 
cấp cho người lập trình những cách khác nhau để tạo ra kiểu dữ 
liệu mới. 
 Trong C++,chúng ta được hỗ trỡ kiểu dữ liệu cấu trúc có 4 dạng 
như sau : 
 Kiểu struct :định nghĩ kiểu dữ liệu mới dựa vào kiểu dữ liểu cơ 
bản. 
Ví dụ: 
 struct So_Yeu_Ly_Lich 
{ 
 char a[20] ;//ten 
 int b; //tuoi 
}; 
/*ta đã định nghĩa kiểu dữ liệu mới có tên la: 
So_Yeu_Ly_Lich */ 
 Kiểu typedef: định nghĩa lại kiểu dữ liệu đã có sẵn để có kiểu dữ 
liệu mới. 
Ví dụ: 
 typedef int so_nguyen; 
 /*ta đã tạo ra kiểu so_nguyên từ kiểu int. kiểu 
so_nguyen có độ lớn và miền giá trị giống kiểu int*/ 
 Kiểu enum : tạo ra kiểu dữ liệu liệt cơ. Cấu trúc: 
enum kieu_du_lieu 
{ 
 Gia_tri_1, 
 Gia_tri_2, 
 … 
} 
 Kiểu unions : tạo ra một kiểu dữ liệu mới từ kiểu dữ liệu cơ sở. 
Nhưng các kiểu dữ liệu này sẽ nằm trong cùng một ô nhớ, có 
kích thước bằng kích thước của kiểu dữ liệu lớn nhất. 
Ví dụ: 
 unions vi_du 
{ 
 int x; 
 foat y; 
 char x; 
}; 
/* kiểu dữ liệu vi_du sẽ có kích thước 32bit, băng kích thước của 
kiểu foat */ 
o Trong Java ,bên cạnh kiểu dữ liệu căn bản. Java còn cung cấp kiểu dữ 
liệu tham chiểu. Có 3 dạng như sau: 
 Mảng : tập hợp các dữ liệu cùng kiểu 
 Lớp : tập hợp các biến và các phương thức. 
Ví dụ 
 Lớp “SinhVien” chứa toàn bộ các chi tiết của một sinh viên và 
các phương thức của sinh viên đó. 
 Giao diện: là một lớp trưu tượng được tạo ra ,cho phép cài đặt đa 
kế thừa trong Java. 
 Trong C#, ta cũng có kiểu dữ liệu tham chiếu như :array, enum, 
class. Ngoài ra C# còn cho phép người dùng định nghĩa một kiểu 
dữ liệu giá trị có chức năng sử dụng và khai báo gấn giống class. 
Đó là kiểu struct. Tuy nhiên kiểu struct không hỗ trợ việc kế 
thừa. 
4. Kiểm tra kiểu,đổi kiểu 
a. Kiểm tra kiểu: 
b. Đổi kiểu: Cả ba ngôn ngữ cung cấp phương thức để đổi kiểu dữ liệu. ta 
có thể khai báo tường minh hay để trình biên dịch thực hiện ngầm 
định.Cách khai báo: 
 ; 
 ; 
 = ; 
Hay = 
Ví dụ: 
 int a; int a; 
 int b; foat b; 
 a= b// ngầm định a = int(b); //chuyển kiểu tường minh 
 Có hai loại đổi kiểu là: 
 Đổi từ kiểu dữ liệu có kích thước lớn sang kiểu dữ liệu có 
kích thước nhỏ. Đổi theo cách này ta có thể để trình biên 
dịch thực hiện ngầm,sai số nhỏ như: 
o double -> foat 
o long -> int 
o int -> short 
o short -> char 
o … 
 Đỗi kiểu dữ liệu có kích thước nhỏ sang sang kiểu dữ liệu 
có kích thước lớn hơn. 
o char -> short 
o short -> int 
o int -> long 
o long -> foat 
o foat -> double 
… 
 Trong trình biên dịch trong Java, C# sẽ báo lỗi nếu gặp 
tình huống đổi kiểu dữ liệu(lớn sang nhỏ) mà không khai 
báo tương minh. Vì một số trường hợp dữ liệu từ kiểu cũ 
có giá trị lớn hơn phạm vi giá trị của kiểu dữ liệu mới nên 
việc chuyển đổi cũng không thành công. 
o Ví dụ: 
/*truong hop bao loi*/ //vuot gia trị chuyen doi 
int a; int a = 355; 
foat b; char b; 
a = b;// bị báo lỗi b = a; //vuot gia tri 
 Bên cạnh việc đổi kiểu biến ,ta cũng có thể đổi kiểu biểu thức với 
công thức được nêu ở trên. 
5. Không gian tên. 
a. Giống nhau: Không gian tên được sử dụng nhằm tránh sự xung đột giữa 
việc sử dụng các thư viện khác nhau từ các nhà cung cấp. Không gian tên 
còn được xem như là tập hợp các lớp đối tượng, và cung cấp các định danh 
cho các kiểu dữ liệu và được đặt trong một cấu trúc phân cấp. 
 Ví dụ: tạo một namespace có tên là MyLib trong C# 
namespace MyLib 
{ 
 using System; 
 public class Tester 
 { 
public static int Main() 
{ 
 for (int i =0; i < 10; i++) 
 { 
 Console.WriteLine( “i: {0}”, i); 
 } 
 return 0; 
} 
} 
 } 
6. Quảng lý và cấp phát bộ nhớ 
a. Quảng lý bộ nhớ 
a. Giống nhau: 
 C++, Java, C# đều được cấp phát vùng nhớ stack và vùng nhớ 
heap để chạy chương trình. 
 Vùng nhớ stack được dùng để cấp phát cho cho mỗi chương trình 
là như nhau. Do đó, vùng nhớ này thường được dùng để lưa giá 
trị các biến tĩnh(biến giá trị). Có một chương trình chuyên để hủy 
các biến thuộc vùng nhớ stack, khi hàm sử dụng các biến kết 
thúc thì các biến cục bộ sẽ bị hủy. 
 Ngoài ra còn có vùng nhớ heap dùng để cấp phát cho con trỏ, 
biến động(trong Java, C# là biến thuộc kiểu dữ liệu tham chiếu). 
 C++, Java, C# quản lý các biến thông qua tên biến 
b. Khác nhau: 
 Trong Java sử dụng hai vùng nhớ heap riêng biệt để cấp phát 
vùng nhớ tĩnh và vùng nhớ động : 
 Một heap tĩnh dùng để quản lý các định nghĩa về lớp, các 
hằng và các phương pháp. 
 Heap động được chia hai phần được cấp phát theo hai 
chiều ngược nhau. 
o Một bên chứa đôi tượng. 
o Một bên chứa con trỏ chỉ đến đối tượng. 
 Trong khi C#, vùng nhớ heap dùng để chứa các biến thuộc loại 
tham chiếu và được quản lý qua một con trỏ chỉ tới đầu vùng nhớ 
heap. Khi một đối tượng đươc khai báo ở vùng nhớ heap thì nó 
sẽ trả về la giá trị của vùng nhớ, giá trị này được gán tới tham 
chiếu. 
b. Cấp phát bộ nhớ 
a. Giống nhau: các biến tĩnh được cấp phát tự động tại một địa chỉ 
trong vùng nhớ stack. 
b. Khác nhau: 
 Trong C++, các biến trong vùng nhớ heap không được cấp phát 
tự động mà lập trình viên phải tự cấp phát thông qua hai toán 
tử: new (cấp phát) và delete(thu hồi). 
 Trong Java, C#có cơ chế thu gom rác, dùng để hủy các biến 
một cách tự động. sau đó sẽ gom các biến còn lại vào cuối vùng 
nhớ, như vậy sẽ tạo ra vùng nhớ heap trống lớn hơn. 
7. Hàm trùng tên: 
a. Giông nhau: 
o Hiện tượng hai hay nhiều hàm có tên giống nhau trong một class được 
gọi là hàm trùng tên. 
o Hàm trùng tên trong C++, Java ,C# có những đặc điểm sau: 
 Khác nhau về số lượng đối số hay kiểu dữ liệu của đối số. 
 Những hàm trùng tên thường thực hiện một công việc nhưng có 
đối số là các kiểu dữ liệu khác nhau. 
 Những hàm trùng tên, trùng đối số, chỉ khác nhau kiểu dữ liệu 
trả về sẽ dẫn đến lỗi biên dịch 
o Trong C++, Java, C# hàm trùng tên chia làm hai loại: 
 RHNạp chồng: các hàm(phương thức) ở cung một class. 
 Ghi đè : các hàm trùng tên nằm trong những class khác nhau. 
Hàm trùng tên(hàm ghi đè) nằm trong class con hay class kế 
thừa. 
o Các hàm có tên giống nhau nhưng nằm trong các class khác nhau, thì 
không được xem là hàm trùng tên. 
b. Khác nhau: 
o Vì C++ là ngôn ngữ lai giữa lập trình cấu trúc và lập trình hướng đối 
tượng, do đó nó vẫn có thể tồn tại hàm trùng tên trong môt chương 
trình(tính chất của ngôn ngữ lập tình cấu trúc). Trong C# và Java 
không tồn tại điều này. 
Ví dụ: 
#include 
void ham_trung_ten (int a) 
{ 
 Cout << “gia tri cua a la:” << a <<endl ; 
} 
void ham_trung_ten ( char *ht) 
{ 
 Cout << “ho ten sinh vien la”<< endl; 
 Cout << ht <<endl ; 
} 
void main() 
{ 
 int a; 
 char *hoten = “huynh ngoc khue”; 
 cin >> a; 
 ham_trung_ten(a); 
 ham_trung_ten(hoten); 
} 
8. Nhập xuất : 
Nhập xuất là phương thức cơ bản mà ngôn ngữ lập trình nào cũng cung cấp 
cho người lập trình. Có hai loại nhập xuất căn bản là: 
- Nhập xuất file. 
- Nhập xuất từ thiết bị nhập chuẩn. 
a. C++ 
Ngôn ngữ lập trình C++ cung cấp cho ta một thư viện để xuât nhập: 
iostream.h . Trong thư viện này có nhiều đôi tượng nhập xuất, nhưng có 2 
đối tượng mà ta thường sử dụng là: 
 cin>> :dùng để nhập dữ liệu từ bàn phím vào chương trình . 
 cout<<: dùng dể xuất ra màn hình. 
 Còn những đối tượng khác có chức năng phục vụ cho việc nhập 
xuất như kiểm tra lỗi ,…,nhập – tập tin(cerr, clog) 
 Ví dụ: 
 #include 
 Void main() 
 { 
 int a; 
 cin >> a ;// nhap gia tri cho bien a 
 cout << a <<endl ;// in ra man hinh gia tri cua a 
 } 
b. Java 
Java có một thư viện xuất nhập chuẩn là: Java.io. Trong đó có hai loại 
nhập xuât cơ bản là : 
o Nhập xuất từ file và các thao tác trên file (liên quan đến một khái niệm 
mới là luồng ). 
o Nhập xuất từ bàn phím(thiết bị nhập chuẩn): 
 Java không hỗ trợ hàm nhập chuẩn mà lập trình viên phải tự viết 
lấy: 
import Java.util.Scanner; 
 public class test 
 { 
 int x; 
 Scanner scan = new Scanner(System.in); 
 x=scan.nextInt(); 
 } 
 Java có hỗ trợ đối tượng của class System.out là: 
System.out.print() và System.out.printf. 
c. C# 
 Ngôn ngữ này hỗ trợ một thư viện trong việc xuất nhập dữ liệu từ bàn 
phím là: consolie 
 Để xuất ra màn hình ta dùng lệnh 
 Console.Write() viết một giá trị ra cử sổ nhưng không 
xuống dòng. 
 Console.WriteLine() viết một thông báo ra màn hình và 
xuống dòng. 
Ví dụ: 
 int I = 10; 
Console.Write(“gia tri cua I la” , I) 
Console.WriteLine(“gia tri cua I la” , I); 
Console.Write(“end” ); 
Kết quả là: 
10 10 
end 
 Để nhập một giá trị ta dùng hàm : Console.Read(). 
NHẬN XÉT CHUNG: 
1. Giống nhau: 
- Cả C#, Java, C# là các ngôn ngữ lập trình bậc cao có tính hướng đối 
tượng. 
- Ngươi lập trình được ngôn ngữ lập trình hỗ trợ đắc lực . nhưng không 
mang tính gò bó. 
- Cả ba ngôn ngữ có chung nền tảng là C. Nhưng chúng phát triển theo 
các chiều hướng khác nhau. 
2. Khác nhau: 
- C++ là ngôn ngữ lai. Nó vừa là ngôn ngữ lập trình cấu trúc(thừa 
hưởng từ C) vừa là ngôn ngữ lập trình hướng đối tượng(cải tiến mới của C++) 
- Java là ngôn ngữ kế thừa các câu lệnh của C, tính hướng đối tượng của 
C++. Nhưng java đã loại bỏ thao tác con trỏ . Java là ngôn ngữ lập trình hoàn 
toàn hướng đối tượng. java là ngôn ngữ vừa biên dịch, vừa thông dịch. Do đó 
các ứng dụng của java(chương trình) có tính độc lập với phần cứng. 
- C# là ngôn ngữ hoàn toàn hướng đối tượng. Nó được phát triển từ 
C++. Ngôn ngữ C# chủ yếu là dùng để lập trình net. 

File đính kèm:

  • pdfĐề tài So sánh sự giống và khác nhau của C++, C# và Java.pdf