Đề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java

Đề bài:

Trình bày điểm giống nhau , khác nhau giữa C++ , C#, Java ở những điểm

sau:

o Chú thích

o Hằng

o Kiểu dữ liệu

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

o Không gian tên

o Quản lý và cấp phát bộ nhớ

o Hàm trùng tên

o Nhập xuất

Bài làm:

I. Chú thích:

Một chương trình cần phải có chú thích về các đoạn mã được viết. Các

đoạn chú thích này sẽ không được biên dịch cũng như không tham gia vào

chương trình. Mục đích chính của nó là làm cho chương trình viết được rõ

ràng dễ hiểu. Do vậy những dòng chú thích sẽ cần thiết cho C++, C# cũng

như Java

pdf6 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 2007 | Lượt tải: 2download
Tóm tắt nội dung Đề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 1 
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 
BÀI THU HOẠCH SỐ 1 
Đề bài: 
Trình bày điểm giống nhau , khác nhau giữa C++ , C#, Java ở những điểm 
sau: 
o Chú thích 
o Hằng 
o Kiểu dữ liệu 
o Kiểm tra kiểu, đổi kiểu 
o Không gian tên 
o Quản lý và cấp phát bộ nhớ 
o Hàm trùng tên 
o Nhập xuất 
Bài làm: 
I. Chú thích: 
 Một chương trình cần phải có chú thích về các đoạn mã được viết. Các 
đoạn chú thích này sẽ không được biên dịch cũng như không tham gia vào 
chương trình. Mục đích chính của nó là làm cho chương trình viết được rõ 
ràng dễ hiểu. Do vậy những dòng chú thích sẽ cần thiết cho C++, C# cũng 
như Java 
Giống nhau: 
 Trong C++, C# , Java đều có hai kiểu chú thích cơ bản là chú thích trên 
một dòng và chú thích trên nhiếu dòng. 
 +Chú thích trên một dòng: bắt đầu bằng ký tự “//”.Khi trình biên dịch gặp 
ký tự này thì sẽ bỏ qua dòng đó. 
 Vd: 
 // Đây là ghi chú trên một dòng 
 +Chú thích trên nhiều dòng: bắt đầu khai báo bằng cặp kí tự 
“/*” trước chú thích và kết thúc chú thích bằng “/*”. Kiểu chú thích 
này có thể có 1 hay nhiều dòng 
 Vd: 
 /* Bắt đầu ghi chú trên nhiều dòng 
 Vẫn còn trong ghi chú 
 Kết thúc ghi chú bằng */ 
Khác nhau: 
 2 
 _Trong C++: chỉ có hai kiểu chú thích cơ bản như ơ trên. 
 _Trong C#: ngoài hai kiểu trên còn hỗ trợ thêm kiểu thứ ba là kiểu chứa 
các ra tập tin XML khi biên dịch để tạo sưu liệu cho mã nguồn. Trong 
kiểu thứ 3 này cũng có 2 kiểu chú định dạng XML nhằm xuất thích là 
chú thích trên 1 dòng ( bắt đầu bằng “ /// ”) và chú thích trên nhiều dòng ( 
bắt đầu bằng “ /** ” và kết thúc khối chú thích bằng “ */ ” ) theo chuẩn 
XML. 
 Vd: 
 /// XML một dòng chú thích theo chuẩn XML 
 /** XML nhiều dòng chú 
 thích theo chuẩn XML */ 
 _Trong Java: giống như trong C#, Java còn có thêm kiểu thứ 3 là chú 
thích trong tư liệu.Đây là loại chú thích đặc biệt được đặt vào những chỗ 
thích hợp trong chương trình để javadoc ( công cụ sinh tài liệu ) có thể 
đọc và sử dụng để tạo ra tư liệu dạng HTML cho chương trình. Phần chú 
thích trong tư liệu được bắt đầu bằng “/**” và kết thúc bằng “*/”. Chúng 
thường được đặt trước phần định nghĩa các lớp interface, phương thức và 
biến. 
II. Hằng: 
Giống nhau: 
 Trong C++, C#, Java, hằng được định nghĩa như là một biểu thức mang 
một giá trị xác định. Khi lập trình ta phải đảm bảo giá trị của nó không 
được thay đổi trong suốt chương trình. 
Khác nhau: 
 _ Trong C++: có các giá trị hằng như: hằng nguyên, hằng long, hằng dấu 
phẩy động, hằng kí tự , hằng xâu kí tự. ta có thể khai báo hằng như sau: 
 const kiểu hằng = giá trị 
 vd: const int MAXLINE=100 
 trong C++ còn có cách thứ hai để khai báo 1 hằng đó là sử dụng chỉ thị 
tiền xử lý define : #define hằng chuỗi_thể_hiện_giá_ trị 
 _ Trong C#: Hằng được phân thành ba loại: giá trị hằng (literal),biểu 
tượng hằng(symbolic constants), kiểu liệt kê(enumerations). 
 _Trong Java: Trong java cách duy nhất để tạo ra một hằng là khai báo 
thuộc tính là final. Vd: 
 final int MAX_VALUE = 100; 
III. Kiểủ dữ liệu: 
 Giống nhau: 
 Cả C++, C# và Java đều chia thành 2 tập hợp kiểu dữ liệu chính là: kiểu 
xây dựng sẵn do ngôn ngữ lập trình cung cấp cho người lập trình và kiểu 
dữ liệu do người dùng tự định nghĩa 
 3 
 Khác nhau: 
C++ C# Java 
Kiểu dữ liệu cơ bản 
của C++ chia làm 3 
nhóm : 
_kiểu char: một giá 
trị kiểu char chiếm 8 
bit, biểu diễn kí tự 
thông qua bảng mã 
ASCII. Có 2 kiểu 
char: sighed char(có 
dấu) và unsighed 
char( không dấu) 
_ Kiểu nguyên: có 4 
loại kiểu nguyên int, 
unsighed int, long, 
unsighed long, 
_Kiểu dấu phẩy 
động: có 3 loại giá trị 
dấu phẩy động là 
float, double, long 
double . 
Kiểu logic 
boolean:một biến 
kiểu logic boolean 
nhận 1 trong 2 giá trị 
true hoặc false. Nó 
được sử dụng để 
nhận giá trị trả về của 
phép toán logic 
C# phân tập hợp kiểu 
dữ liệu thành hai loại: 
Kiểu dữ liệu giá trị 
(value) và kiểu dữ liệu 
tham chiếu (reference). 
Đối với một kiểu dữ 
liệu giá trị thì sẽ được 
lưu giữ kích thước thật 
trong bộ nhớ đã cấp 
phát là stack. Trong khi 
đó thì địa chỉ của kiểu 
dữ liệu tham chiếu thì 
được lưu trong stack 
nhưng đối tượng thật sự 
thì lưu trong bộ nhớ 
heap. 
Kiểu dữ liệu nguyên 
thủy của Java được chia 
làm 3 nhóm : 
- Kiểu nguyên bao gồm 
kiểu số nguyên và kiểu 
kí tự. Kiểu số nguyên 
bao gồm byte, short, 
long ,int. biểu diễn cho 
các số nguyên. Kiểu kí 
tư được thể hiện bằng 
kiểu char. 
_ Kiểu dấu phẩy động 
bao gồm 2 kiểu float và 
double biểu diễn cho số 
thập phân. 
_ Kiểu boolean : có 2 
giá trị true(đúng) và 
false(sai). 
Trong Java có 3 kiểu dữ 
liệu tham chiếu: 
_ Mảng (Array): Tập 
hợp các dữ liệu cùng 
kiểu. Ví dụ : tên sinh 
viên 
_ Lớp (Class): Tập hợp 
các biến và các phương 
thức.Ví dụ : lớp 
“Sinhviên” chứa toàn 
bộ các chi tiết của một 
sinh viên và các phương 
thức thực thi trên các 
chi tiết đó. 
_ Giao diện 
(Interface):Là một lớp 
 4 
trừu tượng được tạo ra 
cho phép cài đặt đa thừa 
kế trong Java. 
 Nhận xét: Một ngôn ngữ mạnh về kiểu dữ liệu là phải khai báo kiểu dữ 
liệu của mỗi đối tượng khi khởi tạo và trình biên dịch sẽ giúp cho người 
lập trình không bị lỗi khi chỉ cho phép một kiểu dữ liệu có thể được gán 
cho kiểu dữ liệu khác. Kiểu dữ liệu cua một đối tượng là tín hiệu để trình 
biên dịch nhận biết được kích thước của 1 đối tượng và khả năng của nó. 
IV. Kiểm tra kiểu, đổi kiểu: 
Giống nhau: 
 Trong C++, C#, Java đều có chuyển kiểu tự động, chương trình 
thực hiện việc tự động chuyển kiểu khi biểu thức gồm các toán 
hạng khác kiểu : khi 2 toán hạng trong 1 phép toán có kiểu khác 
nhau thì kiểu thấp hơn sẽ được tự động nâng thành kiểu cao hơn. 
Kết quả chung là kiểu cao hơn. 
 Chuyển kiểu tường minh: thực hiện chuyển kiểu theo yêu cầu của 
người sử dụng . Cú pháp: (kiểu) biểu thức hoặc kiểu(biểu_thức) 
 vd: Trong C++ : float d = 3.5; 
 int i = (int) d; 
 Khi chuyển một biểu thức kiểu dữ liệu có miền giá trị lớn hơn 
sang 1 kiểu dữ liệu có miền giá trị nhỏ hơn, ta có thể bị mất thông 
tin 
V. Không gian tên: 
 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, C++, C# đưa ra khái niệm namespace , 
namespace được xem như là tập hợp các lớp đối tượng, và cung 
cấp duy nhất các định danh. Ngoài thư viện namespace do ngôn 
ngữ lập trình cung cấp, ta có thể tạo riêng cho mình các 
namespace. C++, C# đưa ra từ khóa using đề khai báo sử dụng 
namespace. 
 Vd: Trong C# , cú pháp: using 
 Để tạo một namespace dùng cú pháp sau: 
 namespace 
 { 
 …… 
 } 
 5 
 Trong Java cũng có khái niệm package giống như namespace 
trong C++ va C#. 
VI. Quản lý và cấp phát bộ nhớ: 
 _ Trong C++, mỗi đối tượng khi tồn tại hay hoạt động được hệ 
điều hành cấp phát 1 vùng nhớ để lưu trữ các giá trị của dữ liểu 
thành phần cũng như các liên kết tới phương thức của chúng. Khi 
tạo ra đối tượng , hệ điều hành sẽ gán luôn cho các dữ liệu thành 
phần này các giá trị khởi tạo tùy theo mong muốn của người lập 
trình bằng các lệnh khai báo đối tượng. Các quá trình gán dữ liệu 
này phải được thực hiện tự động trước khi người lập trình có thể 
tác động lên đối tượng. Trong C++ có thể khởi tạo tự động 1 đối 
tượng bằng cách cung cấp phương thức khởi tạo trong định nghĩa 
lớp. Ngược lại khi kết thúc vòng đời của 1 đối tượng cần phải giải 
phóng hợp lý tất cả bộ nhớ đã được cấp phát cho đối tượng. Mục 
đích chính là đảm bảo các đối tượng được giải phóng đúng đắn. 
Khi khai báo thông qua con trỏ, gặp lệnh new thì khởi tạo đối 
tượng , gặp lệnh delete thì giải phóng đối tượng. 
 _Trong C# , những kiểu dữ liệu chuẩn như int, float, double … là 
những kiểu dữ liệu giá trị, và các biến được tạo ra từ các kiểu dữ 
liệu này được lưu trên stack. Tuy nhiên, với các đối tượng kiểu dữ 
liệu tham chiếu thì được tạo ra trên heap, sử dụng từ khóa new để 
tạo một đốit ượng: vd: ThoiGian t = new ThoiGian(); Sử dụng từ 
khóa delete để giải phóng 1 đối tượng. vd delete (t); 
VII. Hàm trùng tên: 
 Trong thực tế nhiều lúc ta phải thực thi nhiều hàm có chức 
năng giống nhau. Ví dụ ta xây dựng 1 hàm để cộng 2 toán hạng, 
thế nhưng toán hạng có thể là số nguyên , số thực , số phức, phân 
số hay là xâu. Khi đó ta phải xây dựng các hàm thực hiện các chưc 
năng trên có cùng 1 tên. Trong C++, C#, Java có hỗ trợ điều này , 
các hàm đó được gọi là hàm trùng tên hay các hàm xếp 
chồng(chồng hàm). 
 Trong C++,C#, Java: các hàm trùng tên phải khác nhau về 
danh sách tham số. Nghĩa là hoặc các hàm phải khác nhau về số 
lượng tham số, hoặc nếu có số lượng tham số bằng nhau thì phải 
khác nhau về kiểu tham số. Để phân biệt các hàm với nhau, ngoài 
tên hàm , chương trình dịch còn căn cứ vào danh sách các tham số, 
chính vì vậy,danh sách tham số còn được gọi là chữ kí của hàm. 
VIII. Nhập xuất: 
 _Trong C++ , có hai phương thức nhập xuất là nhập xuất theo C 
chuẩn hoặc nhập xuất theo cách mới của C++. 
 6 
 +Nhập xuất trong C chuẩn: sử dụng thư viện stdio.h , xuất dữ 
liệu bằng printf: nó cho phép chuyển dạng, tạo khuôn dạng của đối 
số và đưa chúng ra màn hình . Nhập dữ liệu bằng hàm scanf , nó 
đọc thông tin từ chiều vào chuẩn. 
 +Nhập xuất trong C++ : cách nhập xuất mới trong C++ sử dụng 
lớp. Dùng thư viện iostream.h, nhập dữ liệu bằng >> và xuất dữ 
liệu bằng <<. Xuất dữ liệu với cout: cout<< bieu_thuc; 
 cout<<bieu_thuc1<<bieu_thuc2<<…<<bieu_thucn; 
 Nhập dữ liệu với cin: 
 cin>> bien; 
 cin>>bien1>>….>bienn; 
 + Ngoài ra trong C++ còn có hàm nhập xuất xâu và kí tự. 

File đính kèm:

  • pdfĐề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java.pdf