tek4

Lớp và đối tượng trong C++

by - September. 26, 2021
Kiến thức
Học
<p>Lớp v&agrave; đối tượng trong C++ l&agrave; hai kh&aacute;i niệm cơ bản, quan trọng v&agrave; được sử dụng rất phổ biến trong lập tr&igrave;nh. Trong b&agrave;i n&agrave;y, ch&uacute;ng ta sẽ c&ugrave;ng t&igrave;m hiểu về c&aacute;c đối tượng v&agrave; lớp cũng như c&aacute;ch sử dụng ch&uacute;ng trong C ++ c&ugrave;ng với c&aacute;c v&iacute; dụ dẫn chứng.</p> <p>Trong c&aacute;c b&agrave;i viết trước, ch&uacute;ng ta đ&atilde; t&igrave;m hiểu về h&agrave;m v&agrave; biến. Trong b&agrave;i viết n&agrave;y, ta sẽ đặt một vấn đề như sau: giả sử ta cần lưu trữ chiều d&agrave;i, chiều rộng v&agrave; chiều cao của một căn ph&ograve;ng h&igrave;nh chữ nhật v&agrave; t&iacute;nh diện t&iacute;ch v&agrave; thể t&iacute;ch của n&oacute;.</p> <p>Để xử l&yacute; c&aacute;c nhiệm vụ, ch&uacute;ng ta c&oacute; thể tạo ba biến gồm chiều d&agrave;i, chiều rộng v&agrave; chiều cao c&ugrave;ng với c&aacute;c h&agrave;m t&iacute;nh to&aacute;n diện t&iacute;ch v&agrave; thể t&iacute;ch. Tuy nhi&ecirc;n, trong C ++, thay v&igrave; tạo c&aacute;c biến v&agrave; h&agrave;m ri&ecirc;ng biệt, ch&uacute;ng ta cũng c&oacute; thể g&oacute;i c&aacute;c dữ liệu v&agrave; h&agrave;m li&ecirc;n quan n&agrave;y v&agrave;o một nơi duy nhất. M&ocirc; h&igrave;nh lập tr&igrave;nh n&agrave;y được gọi l&agrave; lập tr&igrave;nh hướng đối tượng.</p> <p>Nhưng trước khi ch&uacute;ng ta c&oacute; thể tạo c&aacute;c đối tượng, ch&uacute;ng ta cần t&igrave;m hiểu về kh&aacute;i niệm lớp (Class) trong C ++.</p> <h1>Lớp (Class)</h1> <p>Một lớp, hay Class, l&agrave; một bản nguy&ecirc;n mẫu cho một đối tượng. Ta c&oacute; thể coi lớp như một bản ph&aacute;c thảo của một ng&ocirc;i nh&agrave;. N&oacute; chứa tất cả c&aacute;c chi tiết về s&agrave;n nh&agrave;, cửa ra v&agrave;o, cửa sổ. Dựa tr&ecirc;n những m&ocirc; tả n&agrave;y, người thiết kế c&oacute; thể x&acirc;y dựng được một ng&ocirc;i nh&agrave;. V&agrave; ng&ocirc;i nh&agrave; ch&iacute;nh l&agrave; đối tượng của bản ph&aacute;c thảo đ&oacute;.</p> <h2>Tạo lớp</h2> <p>Một lớp được định nghĩa trong C ++ bằng c&aacute;ch sử dụng từ kh&oacute;a class v&agrave; theo sau l&agrave; t&ecirc;n của lớp. Phần th&acirc;n của lớp được định nghĩa b&ecirc;n trong dấu ngoặc nhọn v&agrave; được kết th&uacute;c bằng dấu chấm phẩy ở cuối.</p> <p><strong><em>C&uacute; ph&aacute;p:</em></strong></p> <pre class="language-cpp"><code>Class t&ecirc;n{ //Phần th&acirc;n của lớp };</code></pre> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>class sinh_vien{ public: int ID_sv; int tuoi; void in_thong_tin(){ cout &lt;&lt; ID_sv &lt;&lt; tuoi; } };</code></pre> <p>Ở đ&acirc;y, t&ecirc;n của lớp l&agrave; sinh_vien. C&aacute;c biến ID_sv v&agrave; tuoi l&agrave; c&aacute;c biến th&agrave;nh vi&ecirc;n của lớp v&agrave; được định nghĩa trong phần th&acirc;n của lớp. V&agrave; in_thong_tin() l&agrave; một h&agrave;m th&agrave;nh vi&ecirc;n của lớp</p> <h1>Đối tượng</h1> <p>Khi một lớp được định nghĩa, kh&ocirc;ng c&oacute; bộ nhớ n&agrave;o được cấp ph&aacute;t. Để sử dụng c&aacute;c biến v&agrave; c&aacute;c h&agrave;m được định nghĩa trong lớp, ch&uacute;ng ta cần tạo c&aacute;c đối tượng.</p> <p><strong><em>C&uacute; ph&aacute;p để định nghĩa đối tượng:</em></strong></p> <pre class="language-markup"><code>T&ecirc;n_lớp t&ecirc;n_đối_tượng;</code></pre> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>Class sinh_vien{ &hellip; } int main(){ &hellip; sinh_vien sv1; &hellip; }</code></pre> <p>Ch&uacute;ng ta c&oacute; thể tạo c&aacute;c đối tượng của một lớp trong bất kỳ h&agrave;m n&agrave;o của chương tr&igrave;nh. Ngo&agrave;i ra, cũng c&oacute; thể khởi tạo c&aacute;c đối tượng của một lớp trong ch&iacute;nh lớp đ&oacute; hoặc trong c&aacute;c lớp kh&aacute;c v&agrave; ta cũng c&oacute; thể tạo bao nhi&ecirc;u đối tượng t&ugrave;y &yacute; từ một lớp cụ thể.</p> <h1>Truy cập c&aacute;c biến th&agrave;nh vi&ecirc;n v&agrave; h&agrave;m của lớp</h1> <p>Ch&uacute;ng ta c&oacute; thể truy cập c&aacute;c th&agrave;nh vi&ecirc;n dữ liệu v&agrave; c&aacute;c h&agrave;m th&agrave;nh vi&ecirc;n của một lớp bằng c&aacute;ch sử dụng dấu chấm.</p> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>sinh_vien sv1; cout &lt;&lt; sv1.ten;</code></pre> <p>V&iacute; dụ 2: Tạo lớp v&agrave; đối tượng trong chương tr&igrave;nh</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; class sinh_vien { public: int ID_sv; int tuoi; void in_thong_tin(){ cout &lt;&lt; ID_sv &lt;&lt; "\t" &lt;&lt; tuoi; } }; int main() { sinh_vien sv1; sv1.ID_sv = 1; sv1.tuoi = 20; sv1.in_thong_tin(); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>1 20</code></pre> <p>Trong chương tr&igrave;nh tr&ecirc;n, ta đ&atilde; tạo một lớp sinh_vien v&agrave; khởi tạo đối tượng sv1 thuộc lớp sinh_vien. Ta đ&atilde; truy cập c&aacute;c dữ liệu th&agrave;nh vi&ecirc;n của biến sv1 thuộc lớp sinh_vien gồm sv1.ID_sv, sv1.tuoi v&agrave; sv1.in_thong_tin().</p> <p><strong>Ch&uacute; &yacute; 1: Việc sử dụng từ kh&oacute;a public trong chương tr&igrave;nh tr&ecirc;n c&oacute; nghĩa l&agrave; c&aacute;c dữ liệu th&agrave;nh vi&ecirc;n l&agrave; c&ocirc;ng khai v&agrave; c&oacute; thể được truy cập ở bất kỳ đ&acirc;u từ chương tr&igrave;nh.</strong></p> <p><strong>Ch&uacute; &yacute; 2: Ch&uacute;ng ta cũng c&oacute; thể tạo dữ liệu th&agrave;nh vi&ecirc;n ri&ecirc;ng tư bằng c&aacute;ch sử dụng từ kh&oacute;a private. C&aacute;c dữ liệu th&agrave;nh vi&ecirc;n private của một lớp chỉ c&oacute; thể được truy cập từ b&ecirc;n trong lớp đ&oacute;.</strong></p> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; class sinh_vien { private: int lop; public: int ID_sv; int tuoi; void in_thong_tin(int a){ cout &lt;&lt; ID_sv &lt;&lt; "\t" &lt;&lt; tuoi &lt;&lt; endl; lop = a; cout &lt;&lt; lop; } }; int main() { sinh_vien sv1; sv1.ID_sv = 1; sv1.tuoi = 20; sv1.in_thong_tin(11); return 0; }</code></pre> <p>Biến th&agrave;nh vi&ecirc;n lop chỉ được truy cập trong lớp sinh_vien. Do đ&oacute;, đoạn m&atilde; b&ecirc;n dưới sẽ bị lỗi.</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; class sinh_vien { private: int lop; public: int ID_sv; int tuoi; void in_thong_tin(int a){ cout &lt;&lt; ID_sv &lt;&lt; "\t" &lt;&lt; tuoi &lt;&lt; endl; lop = a; cout &lt;&lt; lop; } }; int main() { sinh_vien sv1; sv1.ID_sv = 1; sv1.tuoi = 20; sv1.lop = 11; sv1.in_thong_tin(11); return 0; }</code></pre> <p>V&igrave; lop l&agrave; một biến th&agrave;nh vi&ecirc;n ở dạng private. Do đ&oacute;, n&oacute; sẽ kh&ocirc;ng được truy cập trong h&agrave;m main(), m&agrave; n&oacute; chỉ được trong h&agrave;m th&agrave;nh vi&ecirc;n của sinh_vien l&agrave; in_thong_tin().</p> <p>Như vậy, ta đ&atilde; hiểu được cơ bản về c&aacute;ch khởi tạo, c&aacute;ch sử dụng lớp v&agrave; đối tượng c&ugrave;ng với c&aacute;c v&iacute; dụ, b&ecirc;n cạnh đ&oacute; l&agrave; c&aacute;c ch&uacute; &yacute; cần nhớ. Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm cơ bản về lớp v&agrave; đối tượng trong C++. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p>