Đề tài Khác nhau giữa C++, C#, Java

Có thêm dạng chú thích /// cho XML

Các kiểu dữ liệu ña dạng hơn: Byte,

Sbyte, Short, Ushort, Int, Uint,

Long, Ulong, Float, Double, Decimal,

String, Char, Bool

Mảng là ñối tượng (object),có thuộc

tính và phương thức

Không có sự tự chuyển ñổi qua lại

giữa bool và các kiểu khác

kiểu long có ñộ dài 64 bit

pdf8 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 2107 | Lượt tải: 1download
Tóm tắt nội dung Đề tài 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
ode unsafe 
Hàm nạp chồng (overload) ñược khai 
báo 1 cách tường minh bằng từ khóa 
"override" 
ðể ñọc một ký tự văn bản từ của sổ 
console, Chúng ta dùng phương thức 
 Console.Read(), giá trị trả về sẽ 
Khi bạn tạo các ñối tượng Java, 
JRE sẽ tự ñộng cấp phát không 
gian bộ nhớ cho các ñối tượng 
này từ heap, ñây là vùng bộ nhớ 
lớn có sẵn ñể cấp trong máy tính 
của bạn. Quá trình chạy thi hành 
sẽ theo vết của những ñối tượng 
này giùm bạn. Khi chương trình 
của bạn không sử dụng các ñối 
tượng ñó nữa thì JRE sẽ vứt bỏ 
chúng. Bạn không phải ñể tâm 
ñến chúng nữa. 
Con trỏ trong Java là ẩn ( có 1 
pointer mechanism ñặc biệt, ñó 
chính là reference) 
java không cho phép các phép 
tính (arithmetic) với con trỏ 
Tương tự c++ 
Không giống như các ngôn ngữ 
khác ví như pascal, C/C++.. 
chúng có thể trực tiếp lấy giá trị 
bàn phím , trong C++ vẫn 
cú thể dựng các hàm printf 
và scanf 
Ngoài ra trong C++ 
cũng dựng toán tử xuất: 
cout << biểu thức 
<< ... << biểu thức ; 
ñể ñưa giá trị các biểu thức 
ra màn hỡnh, dựng toỏn 
tử nhập: 
cin >> biến >> ... 
>> biến 
ñể nhập các giá trị số 
(nguyên thực) từ bàn phím 
và gán cho các biến. 
ðể nhập một dẫy không 
quá n ký tự và chứa vào 
mảng h (kiểu char) có thể 
dùng phương thức cin.get 
như sau: 
cin.get(h,n); 
Toán tử nhập cin >> sẽ 
ñể lại ký tự chuyển dãy ‘\n’ 
trong bộ ñệm, ký tự này có 
thể làm trôi phương thức 
cin.get. ðể khắc phục tỡnh 
trạng trên cần dựng 
phương thức cin.ignore ñể 
bỏ qua một ký tự chuyển 
dãy như sau: 
cin.ignore(1); 
ðể sử dụng các toán tử và 
phương thức nói trên cần 
khai báo tệp tiêu ñề: 
là kiểu int hoặc kiểu string tuỳ ý . Và 
chúng ta cũng có hai phương thức 
dùng ñể viết ra chuổi ký tự như sau 
 Console.Write() - Viết một giá 
trị ra của sổ window 
 Console.WriteLine() - tương tự 
trên nhưng sẽ tự ñộng xuống hàng 
khi kết thúc lệnh 
Thí dụ sau sẽ cho giá trị nhập kiểu 
int và giá trị in ra kiểu chuổi 
int x= Console.Read(); 
Console.WriteLine((Char)x); 
Giá trị trả về kiểu string: 
string s = Console.ReadLine(); 
Console.WriteLine(s); 
Giả sử có ñoạn mã như sau: 
int i = 10; 
int j = 20; 
Console.WriteLine(“{0} plus {1} 
equals {2}”, I, j, i+j); 
Kết quả hiển thị như sau: 
10 plus 20 equals 30 
Int i = 940; 
Int j = 73; 
Console.WriteLine(“{0,4}\n+{1.4}\n 
--- \n {2,4}”, I, j, i+j); 
Kết quả: 
 940 
+ 73 
 ---- 
 1013 
từ bàn phím sau khi khai báo 
một biến. Java khó tính hơn 
hẳn! Nó cần một biến thuộc lớp 
Scanner và biến này phụ trách 
việc lấy giá trị mà người dùng 
nhập vào từ bàn phím 
ðể lấy giá trị mà người sử dụng 
nhập từ bàn phím, ta làm theo 
các bước sau: 
1. Khai báo biến thuộc lớp 
Scanner. Lớp Scanner chỉ ñược 
hỗ trợ từ phiên bản Java 1.5 và 
nằm trong gói java.util. 
Trước khi làm việc này chương 
trình cần khai báo thư viện như 
sau: 
import java.util.*; /*dấu * thể 
hiện lấy tất cả các lớp có trong 
gói util có sẵn của java*/ 
// Khai báo một biến Scanner có 
tên là “nhap”. 
Scanner nhap = new 
Scanner(System.in); 
2. Lấy giá trị nhập vào: 
System.out.print(”What is your 
name? “); /* In ra màn hình 
một câu hỏi tên. Nếu bạn viết 
println() thì sẽ tự ñộng xuống 
dòng. 
/* Khai báo và gán giá trị nhập 
từ bàn phím cho một biến kiểu 
String có tên name.*/ 
String name = nhap.nextLine(); 
ðiểm giống nhau giữa C++, C#, Java 
+ Chú thích: 
Thường là ñoạn văn bản. Dùng ñể giải thích một vài khía cạnh của chương trình. Trình biên 
dịch bỏ qua hoàn toàn các chú thích trong chương trình. Tuy nhiên các chú thích này có ý 
nghĩa và ñôi khi rất quan trọng ñối với người ñọc và người phát triễn phần mềm 
 ðều có 2 dạng 
//Chú thích một hàng ñơn 
/* 
Chú thích 
Nhiều hàng… 
*/ 
Có thể có các dòng chú thích ngay trong chương trình 
 Vd: printf(//Chu thich “dsadasdsa”); 
+ Hằng: 
Một hằng (constant) là một biến nhưng giá trị không thể thay ñổi ñược suốt thời gian thi 
hành chương trình. ðôi lúc ta cũng cần có những giá trị bao giờ cũng bất biến. 
Khai báo: 
 Const = ; 
Hằng bắt buộc phải ñược gán giá trị lúc khai báo.Một khi ñã ñược khởi gán thì không thể 
viết ñè chồng lên. 
Trị của hằng phải có thể ñược tính toán vào lúc biên dịch, Do ñó không thể gán một hằng từ 
một trị của một biến 
Hằng làm cho chương trình ñọc dễ dàng hơn, bằng cách thay thế những con số vô cảm bởi 
những tên mang ñầy ý nghĩa hơn. 
Hằng làm cho dễ sữa chương trình hơn. 
Hằng làm cho việc tránh lỗi dễ dàng hơn, nếu bạn gán một trị khác cho một hằng ñâu ñó 
trong chương trình sau khi bạn ñã gán giá trị cho hằng, thì trình biên dịch sẽ thông báo sai 
lầm. 
+ Kiểu dữ liệu: có 2 loại 
*Kiểu dữ liệu cơ bản (dựng sẵn) 
*Kiểu dữ liệu do người dùng ñịnh nghĩa 
Trong một phạm vị hoạt ñộng không thể có hai biến cùng tên 
Khai báo: 
 ; 
 Hoặc 
 ,,…; 
Có các kiểu dữ liệu cơ bản: boolean, char, byte, short, int, long, float, và double. 
Tất cả các kiểu này ñều có ñộ lớn mặc ñịnh 
+ Kiểm tra kiểu, ñổi kiểu: 
Có thể chuyển kiểu dữ liệu thong qua cơ chế chuyển ñổi tường minh hay ngầm ñịnh 
+ Quản lý bộ nhớ 
Con trỏ và cấp phát bộ nhớ ñộng trong C là một tính năng mạnh mẽ trong lập trình. Nó giúp 
người lập trình có thể tác ñộng sâu vào bộ nhớ của hệ thống ñiều này ñặc biệt hữu ích khi 
lập trình những phần mềm hệ thống. Song với lập trình ứng dụng con trỏ cũng gây ra không 
ích rắc rỗi và phiền phức với người lập trình. Bởi việc thao tác và quản lý với một số lượng 
lớn con trỏ trong chương trình ñòi hỏi người lập trình phải rất cẩn thận, có kinh nghiệm. 
Bằng không sự kiểm soát lỏng lẻo có thể gây ra những lỗi nghiêm trọng và việc gỡ lỗi cho 
nó không hề ñơn giản. Chính vì thế trong các ngôn ngữ bậc cao ñi ra ñời sau C như Java và 
C#... chủ yếu dùng ñể lập trình ứng dụng ñã hạn chế hoặc loại bỏ con trỏ 
Nếu bạn không viết hàm khởi tạo nào trong 1 lớp của thì 1 hàm khởi tạo mặc ñịnh tự ñộng 
tạo ra (trong assembly) cho bạn. Hàm khởi tạo mặc ñịnh khởi tạo những giá trị mặc ñịnh 
cho các biến thành viên 
Hàm trùng tên: 
Có thể sử dụng nhiều hàm cùng tên ñể dễ dàng trong việc sử dụng 
Không gian tên: 
Namespaces cho phép chúng ta gộp một nhóm các lớp, các ñối tượng toàn cục và các hàm 
dưới một cái tên. Nói một cách cụ thể hơn, chúng dùng ñể chia phạm vi toàn cụ thành 
những phạm vi nhỏ hơn với tên gọi namespaces. 
Khuông mẫu ñể sử dụng namespaces là: 
namespace identifier 
{ 
 namespace-body 
} 
Trong ñó identifier là bất kì một tên hợp lệ nào và namespace-body là một tập hợp những 
lớp, ñối tượng và hàm ñược gộp trong namespace. Ví dụ: 
namespace general 
{ 
 int a, b; 
} 
Trong trường hợp này, a và b là những biến bình thường ñược tích hợp bên trong 
namespace general. ðể có thể truy xuất vào các biến này từ bên ngoài namespace chúng 
ta phải sử dụng toán tử ::. Ví dụ, ñể truy xuất vào các biến ñó chúng ta viết: 
general::a 
general::b 
Tóm lại: namespace chỉ ñơn giản là phân biệt method của lớp này với method của lớp khác 
mà chúng có cùng tên. VD: 2 nhà ỏ gần nhau. Có 2 người con cùng là Tuấn. Thì lúc chúng 
ta gọi Tuấn thì không biết Tuấn nào. Vậy chúng ta phải gọi Tuấn của ông A hay Tuấn của 
ông B. Thì namespace nó cũng tương tự như vậy. Trong 2 lớp có cùng tên hành vi. Khi 
chúng ta gọi hành vi ñó thì hành vi ñó là của namespace nào. Namespace ñơn giản là vậy 
thôi. 
Tóm lượt & Nhận xét 
Tóm lượt 
- C++ là sự nới rộng của C, nó cung cấp thêm một số khả năng ñể cho phép lập trình hướng 
ñối tượng. Ứng dụng ñược viết theo hướng ñối tượng là 1 tập các ñối tượng tương tác lẫn 
nhau, C++ cung cấp phát biểu "class" ñể người lập trình ñặc tả các ñối tượng cấu thành ứng 
dụng. Tuy nhiên, mức ñộ hỗ trợ hướng ñối tượng của C++ còn yếu, không trong sáng và dễ 
làm người lập trình mắc lỗi trong quá trình viết code. Tóm lại, C++ thích hợp cho những 
người ñã quen dùng C hay những người chỉ biết lập trình hướng ñối tượng hay những người 
muốn kết hợp 2 trường phái lập trình cấu trúc và hướng ñối tượng. 
- C# do Microsoft ñề ra là ngôn ngữ hướng ñối tượng rất thuần nhất và trong sáng, nó hiện 
thực hầu hết các tính chất tốt của mô hình hướng ñối tượng giống như Java. Ngoài ra C# sẽ 
ñược dịch ra mã máy ñể chạy trên nền .Net, nền này cung cấp rất nhiều ñối tượng mạnh, 
phong phú và ña dạng ñể giải quyết nhiều vấn ñề phổ biến trong lập trình, nhờ ñó nếu bạn 
lập trình bằng C#, bạn tốn rất ít chi phí, thời gian, ứng dụng kết quả chạy rất tin cậy, một 
phần do tính chất hướng ñối tượng của C#, phần khác vì ứng dụng dùng chủ yếu các ñối 
tượng ñã ñược viết sẵn bởi Microsoft hay hãng thứ ba nào ñó. Tuy nhiên C# hiện chỉ chạy 
trên nền .Net mà nền .Net hiện chỉ chạy trên HðH Windows (có thể trong tương lai nó sẽ 
chạy trên Linux và MacOS). 
Ngôn ngữ Java có cú pháp rất giống với ngôn ngữ C/C++ (là một ngôn ngữ rất mạnh ñược 
dùng phổ biến hiện nay), tuy nhiên nó ñã ñược thay ñổi khá nhiều ñể ñáp ứng khả năng ñộc 
lập với hệ ñiều hành. Nền tảng của ngôn ngữ Java là các class. Các class ñóng vai trò như 
những ñối tượng, người lập trình khi xây dựng ứng dụng sẽ sử dụng một số class chuẩn của 
hệ thống, ñồng thời có thể tự mình xây dựng class khác ñáp ứng yêu cầu công việc. 
Nhận xét 
C++ là chỉ mới là ngôn ngữ hỗ trợ hướng ñối tượng, còn Java và C# ñã hoàn toàn hướng 
ñối tượng. 
Trong java/ C# không thể can thiệp và vùng nhớ trực tiếp như C++, và java và c# ñều có 
hệ thống dọn những vùng nhớ không dùng ñến nữa, kiểm soát vùng nhớ chặt chẽ hơn C++, 
ít bị lỗi về vấn ñề bộ nhớ hơn C++. 
Trong khi kiểu dữ liệu của C++ ñã tiến bộ hơn với C (trong C, các kiểu ñều là số), ñã quản 
lý chặt các kiểu, ñịnh dạng kiểu rõ ràng hơn, nhận dạng kiểu chính xác hơn, thì trong Java/ 
C# chặt chẽ hơn nữa về kiểu dữ liệu, boolen không thể là số mà chỉ có thể là true hoặc 
false, có hổ trợ thêm unicode, kiểu char hỗ trợ 16 byte ñể có thể chứa ñc mọi loại ngôn ngữ 
Về phần nhập xuất dữ liệu, Java có vẽ rắc rối hơn so với C++ và C# 

File đính kèm:

  • pdfĐề tài Khác nhau giữa C++, C#, Java.pdf