1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Creating a classdef Class (GNU Octave (version 10.3.0))</title>
<meta name="description" content="Creating a classdef Class (GNU Octave (version 10.3.0))">
<meta name="keywords" content="Creating a classdef Class (GNU Octave (version 10.3.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="classdef-Classes.html" rel="up" title="classdef Classes">
<link href="Properties.html" rel="next" title="Properties">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
span:hover a.copiable-link {visibility: visible}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">
</head>
<body lang="en">
<div class="subsection-level-extent" id="Creating-a-classdef-Class">
<div class="nav-panel">
<p>
Next: <a href="Properties.html" accesskey="n" rel="next">Properties</a>, Up: <a href="classdef-Classes.html" accesskey="u" rel="up"><code class="code">classdef</code> Classes</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h4 class="subsection" id="Creating-a-classdef-Class-1"><span>34.6.1 Creating a <code class="code">classdef</code> Class<a class="copiable-link" href="#Creating-a-classdef-Class-1"> ¶</a></span></h4>
<p>A very basic <code class="code">classdef</code> value class
(see <a class="pxref" href="Value-Classes-vs_002e-Handle-Classes.html">Value Classes vs. Handle Classes</a>) is defined by:
</p>
<div class="example">
<div class="group"><pre class="example-preformatted">classdef some_class
properties
endproperties
methods
endmethods
endclassdef
</pre></div></div>
<p>In contrast to old style classes, the <code class="code">properties</code>-<code class="code">endproperties</code>
block as well as the <code class="code">methods</code>-<code class="code">endmethods</code> block can be used to
define properties and methods of the class. Because both blocks are empty,
they can be omitted in this particular case.
</p>
<p>For simplicity, a more advanced implementation of a <code class="code">classdef</code> class is
shown using the <code class="code">polynomial</code> example again (see <a class="pxref" href="Creating-a-Class.html">Creating a Class</a>):
</p>
<div class="example">
<pre class="verbatim">classdef polynomial2
properties
poly = 0;
endproperties
methods
function p = polynomial2 (a)
if (nargin == 1)
if (isa (a, "polynomial2"))
p.poly = a.poly;
elseif (isreal (a) && isvector (a))
p.poly = a(:).'; # force row vector
else
error ("polynomial2: A must be a real vector");
endif
endif
endfunction
function disp (p)
a = p.poly;
first = true;
for i = 1 : length (a);
if (a(i) != 0)
if (first)
first = false;
elseif (a(i) > 0 || isnan (a(i)))
printf (" +");
endif
if (a(i) < 0)
printf (" -");
endif
if (i == 1)
printf (" %.5g", abs (a(i)));
elseif (abs (a(i)) != 1)
printf (" %.5g *", abs (a(i)));
endif
if (i > 1)
printf (" X");
endif
if (i > 2)
printf (" ^ %d", i - 1);
endif
endif
endfor
if (first)
printf (" 0");
endif
printf ("\n");
endfunction
endmethods
endclassdef
</pre></div>
<p>An object of class <code class="code">polynomial2</code> is created by calling the class
constructor:
</p>
<div class="example">
<div class="group"><pre class="example-preformatted">>> p = polynomial2 ([1, 0, 1])
⇒ p =
1 + X ^ 2
</pre></div></div>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Properties.html">Properties</a>, Up: <a href="classdef-Classes.html"><code class="code">classdef</code> Classes</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|