diff options
author | Jovina Dsouza | 2014-07-08 17:19:20 +0530 |
---|---|---|
committer | Jovina Dsouza | 2014-07-08 17:19:20 +0530 |
commit | 84eaa5fbfb3090e912ebe12de1906b7c0bdde908 (patch) | |
tree | f98362fb5e4e43848c150834c3937dc4bde1e176 /C++_from_the_Ground/Chapter_12.ipynb | |
parent | 80751050da776de062000a7d2a5b4e045bfbc9f8 (diff) | |
download | Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.tar.gz Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.tar.bz2 Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.zip |
adding book
Diffstat (limited to 'C++_from_the_Ground/Chapter_12.ipynb')
-rw-r--r-- | C++_from_the_Ground/Chapter_12.ipynb | 904 |
1 files changed, 904 insertions, 0 deletions
diff --git a/C++_from_the_Ground/Chapter_12.ipynb b/C++_from_the_Ground/Chapter_12.ipynb new file mode 100644 index 00000000..a29c9b4d --- /dev/null +++ b/C++_from_the_Ground/Chapter_12.ipynb @@ -0,0 +1,904 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:0b4a52abc3f3246965d1e59241352e867e78e448510ae25e91b7d38dc4dcc202" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 12: A Closer Look at Classes<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.1, Page Number: 274<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " __a=None\n", + " __b=None\n", + " def __init__(self,i,j):\n", + " self.__a=i\n", + " self.__b=j\n", + " def sum(self,x): #Friend function\n", + " return sum1(x)\n", + " \n", + "def sum1(x): \n", + " return x._myclass__a +x._myclass__b #accessing private members\n", + "\n", + "#Variable declaration\n", + "n=myclass(3,4)\n", + "\n", + "#Result\n", + "print n.sum(n)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "7\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.2, Page Number: 275<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class c1:\n", + " __status=None\n", + " def set_status(self,state):\n", + " self.__status=state\n", + " \n", + "class c2:\n", + " __status=None\n", + " def set_status(self,state):\n", + " self.status=state\n", + " \n", + "#Friend function \n", + "def idle(a,b):\n", + " if a._c1__status or b._c2__status :\n", + " return 0\n", + " else:\n", + " return 1\n", + " \n", + "#variable declarations\n", + "def IDLE(): #Constants\n", + " return 0\n", + "def INUSE():\n", + " return 1\n", + "x=c1()\n", + "y=c2()\n", + "\n", + "x.set_status(IDLE())\n", + "y.set_status(IDLE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + " \n", + "x.set_status(INUSE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + "else:\n", + " print \"Pop-up In Use.\"\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Screen Can Be Used.\n", + "Pop-up In Use.\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.3, Page Number: 277<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def IDLE(): \n", + " return 0\n", + "def INUSE():\n", + " return 1\n", + "\n", + "class c1:\n", + " __status=None\n", + " def set_status(self,state):\n", + " self.__status=state\n", + " def idle(self,b): #now a member of c1\n", + " if self.__status or b._c2__status :\n", + " return 0\n", + " else:\n", + " return 1\n", + " \n", + "class c2:\n", + " __status=None #IDLE if off INUSE if on screen\n", + " def set_status(self,state):\n", + " self.status=state\n", + " \n", + "#Variable declarations \n", + "x=c1()\n", + "y=c2()\n", + "\n", + "x.set_status(IDLE())\n", + "y.set_status(IDLE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + " \n", + "x.set_status(INUSE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + "else:\n", + " print \"Pop-up In Use.\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Screen Can Be Used.\n", + "Pop-up In Use.\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.4, Page Number: 278<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import time,string\n", + "\n", + "class timer:\n", + " __seconds=None\n", + " \n", + " def __init__(self,t1,t2=None):\n", + " if t2==None:\n", + " if isinstance(t1,int): #seconds specified as an integer\n", + " self.__seconds=t1\n", + " else: #seconds specified as a string\n", + " self.__seconds=string.atoi(t1)\n", + " else: #time in minutes and seconds\n", + " self.__seconds=t1*60+t2\n", + " \n", + " def run(self):\n", + " t1=time.clock()\n", + " while (time.clock()-t1)<self.__seconds:\n", + " a=10\n", + " print time.clock()-t1\n", + " \n", + " \n", + "a=timer(10)\n", + "b=timer(\"20\")\n", + "c=timer(1,10)\n", + "a.run() #count 10 seconds\n", + "b.run() #count 20 seconds\n", + "c.run() #count 1 minute,10 seconds\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.0000009774\n", + "20.0000009774" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "70.0000004887" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.5, Page Number: 280<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import time,string\n", + "\n", + "class timer:\n", + " __seconds=None\n", + " \n", + " def __init__(self,t1,t2=None):\n", + " if t2==None:\n", + " if isinstance(t1,int): #seconds specified as an integer\n", + " self.__seconds=t1\n", + " else: #seconds specified as a string\n", + " self.__seconds=string.atoi(t1)\n", + " else: #time in minutes and seconds\n", + " self.__seconds=t1*60+t2\n", + " \n", + " def run(self):\n", + " t1=time.clock()\n", + " while (time.clock()-t1)<self.__seconds:\n", + " a=10\n", + " print time.clock()-t1\n", + " \n", + "a=timer(10)\n", + "a.run()\n", + "\n", + "print \"Enter number of seconds: \"\n", + "str=\"20\"\n", + "b=timer(str) #initialize at the run time\n", + "c.run()\n", + "\n", + "print \"Enter minutes and seconds: \"\n", + "min=1\n", + "sec=10\n", + "c=timer(min,sec) #initialize at the run time\n", + "c.run()\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.0000004887\n", + "Enter number of seconds: \n", + "70.0000009774" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Enter minutes and seconds: \n", + "70.0000009774" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.6, Page Number: 282<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " __a=None #private members\n", + " __b=None\n", + " def setab(self,i,j): #publc functons\n", + " self.__a=i\n", + " self.__b=j\n", + " def showab(self):\n", + " print \"a is \",self.__a\n", + " print \"b is \",self.__b\n", + "\n", + "#Variable declaration\n", + "ob1 = myclass()\n", + "ob2 = myclass()\n", + "\n", + "#Intalizing\n", + "ob1.setab(10,20)\n", + "ob2.setab(0,0)\n", + "\n", + "print \"ob1 before assignment: \"\n", + "ob1.showab()\n", + "print \"ob2 before assignment: \"\n", + "ob2.showab()\n", + "\n", + "ob2 = ob1 #assign ob1 to ob2\n", + "\n", + "#Result\n", + "print \"ob1 after assignment: \"\n", + "ob1.showab()\n", + "print \"ob2 after assignment: \"\n", + "ob2.showab()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ob1 before assignment: \n", + "a is 10\n", + "b is 20\n", + "ob2 before assignment: \n", + "a is 0\n", + "b is 0\n", + "ob1 after assignment: \n", + "a is 10\n", + "b is 20\n", + "ob2 after assignment: \n", + "a is 10\n", + "b is 20\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.7, Page Number: 283<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from copy import deepcopy\n", + " \n", + "class OBJ:\n", + " def set_i(self,x):\n", + " self.__i=x\n", + " def out_i(self):\n", + " print self.__i,\n", + " \n", + "def f(x):\n", + " x=deepcopy(x)\n", + " x.out_i() #outputs 10\n", + " x.set_i(100) #this affects only local copy\n", + " x.out_i() #outputs 100\n", + " \n", + "#Variable declaration\n", + "o=OBJ()\n", + "o.set_i(10)\n", + "f(o) \n", + "o.out_i() #still outputs 10, value of i unchanged\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 100 10\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.8, Page Number: 284<h3> " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass: \n", + " def __init__(self,i):\n", + " self.__val=i\n", + " print \"Constructing\"\n", + " def __del__(self):\n", + " print \"Destructing\"\n", + " def getval(self):\n", + " return self.__val\n", + " \n", + "def display(ob):\n", + " print ob.getval()\n", + "\n", + "#Varable declaration\n", + "a=myclass(10)\n", + "\n", + "display(a)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing\n", + "Destructing\n", + "10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.9, Page Number: 286<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "class myclass:\n", + " def __init__(self,i):\n", + " print \"Allocating p\"\n", + " self.p=pointer(c_int(i))\n", + " def __del__(self):\n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.p[0]\n", + " \n", + "def display(ob):\n", + " print ob.getval()\n", + "\n", + "#Variable declaration\n", + "a=myclass(10)\n", + "\n", + "display(a)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating p\n", + "10\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.10, Page Number: 287<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "from ctypes import *\n", + "class myclass:\n", + " def __init__(self,i):\n", + " print \"Allocating p\"\n", + " self.p=pointer(c_int(i))\n", + " def __del__(self):\n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.p[0]\n", + " \n", + "def display(ob):\n", + " print ob[0].getval()\n", + "\n", + "#Variable declaration\n", + "a=[]\n", + "a.append(myclass(10))\n", + "\n", + "display(a)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Freeing p\n", + "Allocating p\n", + "10\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.11, Page Number: 288<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class sample:\n", + " __s=None\n", + " def show(self):\n", + " print self.__s\n", + " def set(self,str):\n", + " self.__s=str\n", + "\n", + "#Return an object of type sample\n", + "def input():\n", + " str=sample()\n", + " instr = \"Hello\" #User input\n", + " str.set(instr)\n", + " return str\n", + "\n", + "#Variable declaration\n", + "ob=sample()\n", + "\n", + "#assign returned object to ob\n", + "ob=input()\n", + "\n", + "#Result\n", + "ob.show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.12, Page Number: 289<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class sample:\n", + " __s=None\n", + " def __init__(self):\n", + " self.__s=0\n", + " def __del__(self): \n", + " print \"Freeing p\"\n", + " def show(self):\n", + " print self.__s\n", + " def set(self,str):\n", + " self.__s=str\n", + " \n", + "#This function takes one object parameter\n", + "def input():\n", + " str=sample()\n", + " instr=\"Hello\" #User input\n", + " str.set(instr)\n", + " return str\n", + "\n", + "#Variable declaration\n", + "ob=sample()\n", + "\n", + "#assign returned object to ob\n", + "ob=input()\n", + "\n", + "#Result\n", + "ob.show()\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Freeing p\n", + "Freeing p\n", + "Hello\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.13, Page Number: 292<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " __p=None\n", + " def __init__(self,i):\n", + " if isinstance(i,int):\n", + " print \"Allocating p\"\n", + " self.__p=i\n", + " else:\n", + " print \"Copy constructor called\"\n", + " self.__p=i.getval()\n", + " def __del__(self): \n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.__p\n", + " \n", + "#This function takes one object parameter\n", + "def display(ob):\n", + " print ob.getval()\n", + "\n", + "#Variable declaration\n", + "ob=myclass(10)\n", + "\n", + "#Result\n", + "display(ob)\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating p\n", + "10\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.14, Page Number: 294<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "class myclass:\n", + " __p=None\n", + " def __init__(self,i):\n", + " if isinstance(i,int):\n", + " print \"Allocating p\"\n", + " self.__p=i\n", + " else:\n", + " print \"Copy constructor called\"\n", + " self.__p=i.getval()\n", + " def __del__(self): \n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.__p\n", + " \n", + "\n", + "#Variable declaration\n", + "a=myclass(10) #calls normal constructor\n", + "b=myclass(a) #calls copy constructor\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating p\n", + "Copy constructor called\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.15, Page Number: 295<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " def __init__(self,i=0):\n", + " if isinstance(i,int):\n", + " print \"Normal constructor\"\n", + " else:\n", + " print \"Copy constructor\"\n", + "\n", + "\n", + "#Variable declaration\n", + "a=myclass() #calls normal constructor\n", + "\n", + "f=myclass()\n", + "a=myclass(f) #Invoke copyconstructor\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Normal constructor\n", + "Normal constructor\n", + "Copy constructor\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.16, Page Number: 297<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class c1:\n", + " def __init__(self):\n", + " self.__i=None\n", + " def load_i(self,val):\n", + " self.__i=val\n", + " def get_i(self):\n", + " return self.__i\n", + " \n", + "#Variable declaration \n", + "o=c1()\n", + "\n", + "o.load_i(100)\n", + "\n", + "#Result\n", + "print o.get_i()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file |