Ⅰ 程序中set和get的用法是什麼
java程序一般將A類的屬性修飾符設置為private,這是為了更好的封裝數據。要想在B類里引用該屬性,就可以在A類里定義修飾符為public的set,get方法以設置和獲取private型的屬性值
別說的那麼專業化了,理解都要半天。
就這么理解吧,面向對象中,想對類的成員變數設置訪問一些許可權,於是,就將該欄位設置為private的,這樣別的類就不能訪問了,然後在該內定義兩個方法,一個專門用於獲取,一個用於修改,這樣,在你不想讓別人亂動該欄位的時候,就在該方法內寫一些限制條件。
而為了規范起見(團隊開發需要嘛),就根據人家老外的習慣,將方法名設置為set+欄位名,get+欄位名(名字亂改沒問題),既然規范了,那就是別人都叫這名了,於是,有些框架給對象賦值就有方法了,方法名稱由get或set開始的又有private變數名的,就找出來調用。hibernate1框架就這樣弄得,至於後面的版本是不是這樣就不大清楚了。
JavaBean就是一個JAVA類,既然是JAVA類就不需要什麼組件了,這玩意直接深入到虛擬機了的
java程序規范中會建議大家盡量將類中的屬性私有化,即定義為private變數,通過設置set和get函數來對屬性進行操作。一些人存在這樣的疑問,為什麼不直接將屬性設置為public,以後調用屬性時直接通過對象進行訪問不是更方便?
當然java中這樣做有它的原因:
1 將數據與行為分離,也就是java的面向對象的概念。
對象就是屬性+行為,封裝就是把對象的私有屬性封裝起來,只有通過自己公開的行為去改變(獲得)對象內部的私有屬性信息,而那些public的方法正是面向其他對象的介面,只有通過介面去改變(獲得)對象的私有屬性
2 安全性
設想,你有一個Person類代表一個人,Person有一個char類型的sex欄位表示性別,理論上,sex只接受兩個值, 'M '和 'F ',但如果你把sex欄位設為public,你很難限制你的用戶只給它賦 'M '或 'F '值。將sex設為private,再用setSex()來設置性別,你就完全可以控制這種行為了。而且你還可以控制只能get不能set,或相反,但如果是public就不行了。別外有一點屬性我們可能並不希望其他用戶對我們的屬性進行寫操作,這個時候,可以直接不寫setX方法。這就是只讀屬性了。
3 編碼規范性
我們在設計類,或者作com組件時經常告訴其實coder,你只需要調用我的XX介面方法就可以了,內部我是怎麼實現的,你不用管,如果面向特定的環境特定的時間段,直接將屬性聲明為public,讓外部對象訪問也未償不可,沒有面象對象思想時,我在寫c語言程序時結構中的變數是可以隨意被訪問的,因為沒有pulbic,private之分,現在我們是面向對象編程,我們需要在介面處作文章,而保護對象的私有屬性,即安全性,只有通過對外公開的介面方法去訪問在面向對象理論上認為是安全的。
4 穩定性
5 可擴展性
6 便於維護
Ⅱ 求教c++中set和get的區別與用法
在遠標學過哪滾(1)get函數:該函數有三種使用形式:1. 輸入流對象名.get() 這種形式是從輸入流獲取一個字元 2.輸入流對象名.get(c) 這是從輸入流獲取一個字元,並存入變數c中 和第一類差不多 3.輸入流對象名.get(s,n,Delim) 這是從輸入流獲取n-1哥字元 存入s中 Delim相宴含當於換行的 endl
(2)set函晌緩笑數: 例如setf(long f)設置由參數f所指定的格式標志位 cout.setf(ios::oct)就是設置按八進制輸入輸出的
Ⅲ 關於WinCC C腳本的疑問,如何將一個變數賦值給另一個變數
1、首先打開TAG變數導出導入工具,如下圖所示即為變數導入導出工具,點擊「....」即可更改導出的文件夾位置,然後在圖中選擇「export」,然後點擊下方的「execute」。
Ⅳ c語言中get的用法
面向對象編程的一個規則是:使用戶只需要指定對象能做什麼,而不需要去指定或者了解對象是如何完成該的。 下面我就跟你們詳細介紹下c語言中get的用法,希望對你們有用。
c語言中get的用法如下:
通過get和set訪問器來訪問,就保持了這種規則,而且還提供了額外的功能,如對值進行檢查,實現只讀或只寫屬性等。
總的來說就是可以通過set get 來對類的屬性進行封裝,面向對象的程序是不可以直接用類自己定義的屬性的
剛剛學C#的時候,很多人都不明白屬性的訪問器有什麼用呢,我上網見了不少的評論,拉下來給大家看看
一般面向對象編程語言都要求成員變數不能直接暴露給外部訪問,如下:
public class A
{
public int Age; //這是不好的,待會有程序員可能把-1賦給Age
}
為了防止亂賦值,C#設計了一個屬性機制,要求把成員變數設為私有,在通過屬性來控制鋒告成員變數的讀寫,如下:
public class B
{
private int age; //私有成員變數
public int Age //age的屬性
{
get{ return age; } //讀取器
set{ 梁賀 //寫入器
if(value>0)
age = value; //value是准備寫入的值
}
}
}
這樣Age就像保安一樣,擋在age的前面。訪問age的時候需要通過Age許可,如下:
B b = new B();
b.Age = -1; //這是不行的,-1被橡基派帶入value,value<0,判斷不成立
b.Age = 10; //這是可行的
如果還有不懂的話可以留言,我盡量教會你,下面是我一個簡單是例子
//-------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
public class Myclass
{
private string id="";
private string name="";
public string ID
{
get
{
return id;
}
set
{
id =value;
}
}
public string Name
{
get
{
return name;
}
set
{
name =value;
}
}
}
class Program
{
static void Main(string[] args)
{
Myclass clazz = new Myclass ();
clazz.ID ="我愛你阿";
clazz.Name="王素瑩";
Console.WriteLine("{0}他是誰?{1}",clazz.ID,clazz.Name);
Console.ReadLine();
}
}
}
Ⅳ 請問wincc中怎麼用全局腳本建立外部變數和內部變數的連接
連接?如果我沒有理解錯的話可能你是想讀寫wincc變數吧?
在碼中配腳本中,C腳本基本是這樣的語句:
FloatF;
F=GetTagFloat(「TAG1」)這樣就可以讀出TAG1的數值,不管TAG1是外部變數還是內部變數,在腳本中都要加上「」,否則就默認是對腳本內部使用的變數讀寫。
如果想向某一個變數寫數值的話可以使用SetTagFloat(「TAG1」,99.2)這樣TAG1就被設置成了99.2這樣的值。另外個對word類型的數據還有SetTagWord()函數,其他類型的也有,看一下培巧幫助。
#include"apdefap.h"
intgscAction(void)
{
#pragmaoption(mbcs)
GetTagWord(Tag_Name);//Return-Type:WORD
GetTagValue(lpdmVarKey,lpdmresult,lpdmError);//Return-Type:BOOL
GetTagSWord(Tag_Name);//Return-Type:shortint
GetTagSDWord(Tag_Name);//Return-Type:longint
GetTagSByte(Tag_Name);//Return-Type:char
GetTagRaw(Tag_Name,pValue,size);//Return-Type:BOOL
GetTagFloat(Tag_Name);//Return-Type:float
GetTagDWord(Tag_Name);//Return-Type:DWORD
GetTagDouble(Tag_Name);//Return-Type:double
GetTagChar(Tag_Name);//Return-Type:char*
GetTagByte(Tag_Name);//Return-Type:BYTE
GetTagBit(Tag_Name);//Return-Type:BOOL
SetTagWord(Tag_Name,value);//Return-Type:BOOL
SetTagValue(lpdmVarKey,lpdmValue,dwState,lpdmError);//Return-Type:BOOL
SetTagSWord(Tag_Name,value);//Return-Type:BOOL
SetTagSDWord(Tag_Name,value);//Return-Type:BOOL
SetTagSByte(Tag_Name,value);//Return-Type:BOOL
SetTagRaw(Tag_Name,pValue,size);//Return-Type:BOOL
SetTagFloat(Tag_Name,value);//Return-Type:BOOL
SetTagDWord(Tag_Name,value);//Return-Type:BOOL
SetTagDouble(Tag_Name,value);//Return-Type:BOOL
SetTagChar(Tag_Name,value);//Return-Type:BOOL
SetTagByte(Tag_Name,value);//Return-Type:BOOL
SetTagBit(Tag_Name,value);//Return-Type:遲指BOOL
return0;
}
Ⅵ wincc用腳本獲取項目路徑
「打開"全局腳本編輯器模判""全局腳本編輯器"用來創建和編輯函數和動作。wincc用腳本獲取項目路徑是,「打開"全局腳本編輯器""全局腳本編輯器"用來創建和編輯函數和動作。全局腳本編輯器分為"C腳本編輯器"和"VBS腳本編輯器"。在WinCC項目管理器下,雙擊"C-Editor"即可打開歷碼念全局肢困腳本編輯器。」
Ⅶ wincc全局腳本怎麼避免一運行就執行一次
wincc全局腳本避免一運行就執行一次解決方法如下李喚:
1、對於周期觸發器,可以在其全局腳本中加一個WinCC內部Bool型變數。灶緩
2、對於變數變化觸發器哪辯凱,如果要求只有當觸發器變數(例如變數b)值從0跳轉到1時才執行全局動作,可以在全局腳本中增加一個用來計數的內部變數c。
Ⅷ 如何在FactoryTalk中使用「全局腳本
FactoryTalk View SE(以下簡稱FTV)中不支持稿此全局腳本,這造成了很大麻煩,相同的子程序必須在每個display中都寫一遍,下面給大家介紹一種實現全局腳本功能的變通方法。
這種方法的思路是:將公用的腳本保存在一個display中,在FTV客戶端的啟動宏中將這個display在後台載入,其他的display可通過這個後台的display引用其中的公用子程序,具體步驟如下:
1、新建碧沒一個display,命名為VBA_Codes,在其中定義子程序如下:
public sub hello_world()
msgbox "hello,world!"
end sub
2、新建一個啟動宏,名為:startup,在其中加入下面的代碼:
display VBA_Codes /B /ZA
3、新建display,名為:MainPic
在鍵慧迅MainPic中加入如下代碼:
Dim AllDisplays As Displays
Dim VBA_Codes As Display
Private Sub Display_AnimationStart()
Set AllDisplays = LoadedDisplays
Set VBA_Codes = AllDisplays.Item("VBA_Codes")
End Sub
到此為止,大功告成,在MainPic中即可引用(調用)VBA_Codes中的子程序,調用方法為:
VBA_Codes.Hello_World
Ⅸ Wincc中在哪編寫函數內容
寫項目函數?
打開wincc---左側仿枝導航欄選擇「全局備橘敏腳本」---雙擊選擇一種語言(C或者VBS腳伍渣本)
以C為例,如圖,在項目函數上右擊---新建:
Ⅹ 請問C#中get和SET到底是什麼意思啊
get set是用來擴展域的,也就是C里的變數,只是用起來更加靈活而己。看以下代碼:
using System;
public class cls
{
private int book;//定義一個域(也可以叫變數,只是面向對像里都這么叫,使滑寬用起來也更加方便)
public int Book
{
get
{
Console.WriteLine("dsf");
return book;
}
set
{
Console.WriteLine("aaa");
book=value;
}
}
public static void Main()
{
cls obj = new cls();
obj.Book = 120; //注意這一句
Console.WriteLine(obj.Book);
}
}
運行結果為:
aaa
dsf
120
也就是先把120賦值給value(相當一個存儲空間),然後再用get{}返回給Book,實際上也就是一次改變變數值的過程。
那你也許擾滾會問為什麼要這么復雜呢?因為這是用了嵌套,所以可以更加方便的寫入其它語句,在以後你就信李亮應該學到了。
如果沒有:
obj.Book = 120;
請想一想會是什麼結果呢?
只是一個取值過程:get{}而沒有執行set{}
結果為:
dsf
0