중요 포인트 1.챌린지 소개에서 알림 신청을 해놓는다.(깜빡하고 며칠 지난 다음부터 참가하면 아쉽잖아요~) 2.오블완 챌린지를 널리 알린다.(지금 보고 있는 사이트 처럼 오블완 챌린지에 대해 내 블로그에 홍보하기) 3.챌린지 기간동안 1일 1블로그 작성하기(11월 7일 ~ 11월 27일) 4.상품받기
4-5살 아이들은 인지, 사회성, 언어, 감정 조절 등 다양한 영역에서 큰 변화를 경험하며 성장하는 시기입니다. 이번 글에서는 이 시기 아이들에게 필수적인 교육, 가르치는 데 효과적인 방법, 그리고 부모로서의 역할에 대해 자세히 알아보겠습니다. 이 글을 통해 부모님들이 아이의 발달을 돕기 위해 무엇을 준비해야 할지 고민해보는 계기가 되었으면 합니다.
내용 요약
4-5살은 아이가 점점 더 많은 경험을 통해 세상을 이해하고 자신만의 사고 방식을 형성해 나가는 중요한 시기입니다. 이 시기 아이들은 언어와 감정을 더욱 자유롭게 표현하고, 친구와의 상호작용을 통해 사회성을 키워갑니다. 이러한 발달을 촉진하려면 부모와의 교감, 환경적 지원, 그리고 적절한 교육이 필요합니다. 이 글에서는 이 시기 아이들에게 꼭 필요한 교육 요소들을 살펴보고, 이를 통해 아이가 건강하게 성장할 수 있는 기반을 마련하는 방법에 대해 다뤄보겠습니다.
목차
1.4-5살 아이들에게 필요한 필수 교육 2.아이들에게 효과적으로 가르치는 방법 3.부모의 역할 4.결론
반응형
4-5살 아이들에게 필요한 필수 교육
① 사회성 발달과 감정 조절
이 시기 아이들은 또래 친구들과의 놀이를 통해 상호작용을 배우며 사회성을 발달시킵니다. 이 과정에서 아이들은 의견이 다를 때 감정을 조절하고 타협하는 방법을 익히게 됩니다. 예를 들어, 놀이 도중 장난감을 공유하거나 놀이 규칙을 정하는 상황에서 자연스럽게 갈등 상황을 경험하게 되는데, 이 과정이 아이의 사회성 발달에 중요한 역할을 합니다.
부모의 역할: 부모는 아이가 이러한 갈등 상황을 겪을 때 즉시 개입하기보다는 아이가 스스로 해결할 수 있도록 기다려주는 것이 중요합니다. 만약 아이가 힘들어할 때는 상황을 설명해주고, 친구의 입장을 이해할 수 있도록 도와주세요. 이러한 경험을 통해 아이는 타인과의 상호작용을 보다 유연하게 받아들이고, 자신의 감정을 건강하게 표현할 수 있게 됩니다.
② 언어 발달과 의사소통 능력
4-5살 아이들은 언어적으로도 큰 발전을 이루는 시기입니다. 다양한 어휘와 문장을 습득하며 자신의 생각과 감정을 표현할 수 있게 됩니다. 이야기를 통해 언어를 확장할 수 있는데, 이때 부모가 제공하는 언어 자극이 매우 중요합니다. 특히, 아이와 대화할 때 열린 질문을 통해 아이가 자신의 생각을 더욱 풍부하게 표현할 수 있도록 유도하는 것이 좋습니다.
예시: “오늘 어린이집에서 어떤 일이 있었니?” 같은 질문을 통해 아이가 구체적으로 상황을 설명할 수 있게 도와주면, 아이의 언어 능력뿐만 아니라 사고력도 함께 발달하게 됩니다.
③ 창의력과 문제 해결 능력
창의력과 문제 해결 능력도 4-5살 시기에 본격적으로 발달하기 시작합니다. 아이가 다양한 놀이를 통해 새로운 방식으로 생각하고 시도하면서 창의력을 키울 수 있습니다. 문제 해결 능력은 실패를 경험하면서도 다시 시도할 수 있는 기회를 제공함으로써 자연스럽게 발달됩니다.
부모의 역할: 아이가 놀이에서 어려움을 겪을 때는 해결 방법을 직접 제시하기보다는, 힌트를 주고 아이가 스스로 해결할 수 있도록 도와주세요. 이러한 방식은 아이가 도전 의식을 가지고 문제에 접근할 수 있도록 자립심을 길러줍니다.
아이들에게 효과적으로 가르치는 방법
①놀이 기반의 학습
아이에게는 놀이가 가장 자연스러운 학습 방식입니다. 아이들이 놀이를 통해 사회성, 창의성, 언어적 표현력을 동시에 기를 수 있습니다. 예를 들어, 역할놀이를 통해 상호작용하는 법을 배우고, 블록 놀이를 통해 창의적 사고를 기를 수 있습니다. 놀이를 통해 새로운 개념을 배우도록 돕는 방식이 가장 효과적입니다.
예시: 블록을 쌓는 놀이를 하면서 “이 블록은 여기에 어떻게 놓을까?” 같은 질문을 통해 아이가 창의적인 해결책을 고민하게 해보세요.
②일상 속 자연스러운 학습
아이들에게 특별한 학습 시간이 아닌 일상 속에서 자연스럽게 배울 수 있는 기회를 제공하는 것이 좋습니다. 부모와 함께 장을 보거나, 요리를 하는 과정에서 아이는 새로운 경험과 개념을 습득하게 됩니다. 일상적인 상황에서 숫자 개념, 물체의 이름 등 다양한 지식을 배울 수 있습니다.
예시: 장을 볼 때 “우리가 사야 할 사과는 몇 개일까?” 같은 간단한 수 개념 질문을 통해 아이가 수학적 개념에 자연스럽게 접근할 수 있습니다.
③부모의 일관된 태도와 인내심
이 부분이 부모로서 아이들을 가르칠 때 가장 하기 힘든 부분인데요. 아이들에게 인내심은 매우 중요한 덕목입니다. 그래서 아이가 스스로 해결할 수 있는 시간을 제공하고, 실패를 경험해도 다시 시도할 수 있도록 지지해 주세요. 아이들이 스스로 문제를 해결하고 자신감을 느낄 수 있는 기회를 제공하는 것이 중요합니다. 그러니 아이가 잘 하지 못하더라도 부모는 옆에서 가르쳐 줄것이 아니라 잘 못하고 실패하더라도 끝까지 스스로 해결해 보는 연습을 할 수 있도록 기회를 제공해 주는 것이 필요합니다.
부모의 역할: 아이가 어떤 과정을 시도하더라도 섣불리 개입하지 않고, 스스로 문제를 해결할 수 있도록 인내심을 가지고 기다려주는 것이 필요합니다.
부모의 역할
① 적극적 경청과 긍정적인 반응
아이들은 부모가 자신에게 집중하고 있다는 느낌을 받을 때 자신감을 키우고 더 적극적으로 표현하게 됩니다. 부모가 아이와 대화할 때 아이의 말을 진심으로 경청하고, 긍정적인 피드백을 제공하는 것이 중요합니다.
예시: “네가 친구에게 양보해주었구나. 정말 멋졌어!”라는 식의 구체적인 칭찬은 아이가 사회성을 배워나가는 데 큰 도움이 됩니다.
② 안정적인 환경과 일관된 규칙
아이들은 안정적이고 예측 가능한 환경에서 성장할 때 더욱 잘 발달합니다. 일관된 규칙과 일상을 제공함으로써 아이가 자신이 안전하다는 느낌을 받을 수 있도록 도와주세요. 부모가 일관된 태도를 유지할 때, 아이는 혼란스러워하지 않고 부모의 지시를 신뢰하게 됩니다.
부모의 역할: 일상 생활 속에서 규칙을 정하고, 그 규칙을 일관성 있게 지키는 것이 중요합니다. 이러한 환경은 아이가 자기 통제력을 기르고 타인과의 관계에서 자신의 역할을 이해하는 데도 도움이 됩니다.
③긍정적인 모델링
아이들은 부모의 행동을 관찰하며 자연스럽게 배웁니다. 부모가 일상 속에서 감정을 조절하고 대화로 문제를 해결하는 모습을 보여주는 것은 아이에게 큰 교훈이 됩니다.
부모의 역할: 아이와의 갈등 상황에서도 차분하게 대화를 통해 해결하는 모습을 보여주는 것이 중요합니다. 이런 경험을 통해 아이는 갈등이 있을 때 폭력적이지 않은 방법으로 해결할 수 있다는 것을 배우게 됩니다.
결론
4-5살은 아이의 전반적인 발달에 중요한 시기입니다. 이 시기에 필요한 다양한 교육과 지원을 통해 아이는 자기 자신을 이해하고 타인과 상호작용하는 법을 배우게 됩니다. 부모는 아이에게 적절한 가이드를 제공하고, 아이가 성장하는 과정에서 든든한 지지자가 되어줄 필요가 있습니다. 올바른 교육을 통해 아이의 성장과 발달을 돕는 것이 부모의 큰 역할임을 다시금 깨닫게 됩니다.
개인 소감
아이를 키우면서 부모로서 책임감과 함께 계속해서 배워나가야 할 것이 많다는 것을 느낍니다. 특히 4-5살 시기의 아이들과 상호작용하며, 아이들이 어떻게 세상을 이해해가는지 지켜보는 것은 값진 경험입니다. 부모로서 지켜봐 주고 인내하며, 아이가 스스로 성장할 수 있도록 도와주는 일이 쉽지만은 않지만 그만큼 보람이 있는 일이라고 생각합니다. 아이가 스스로의 방식으로 세상을 이해해 가는 과정을 존중하고, 조금씩 인내심을 기르며 함께 나아가고자 합니다. 아이가 행동하는 한순간의 모습만을 보고 아이의 미래 모습을 그리며, 걱정하거나 답답해 하기 보다는 아이가 조금씩이라도 성장해 가고 있는 모습이 보인다면, 하루 하루를 보람있고 뜻있게 생각하면서 지낸다면 아이와 함께 부모의 마음도 조금씩 성장할 것이라고 생각합니다. 부모님들~! 너무 조바심내고 걱정하지 마시고 잘 못하더라도 아이가 스스로 하게끔, 그래서 무언가를 느끼고 배울 수 있게끔 해주신다면 분명 아이도 많은 성장을 할것이니 믿고 기다리시기 바랍니다.
'세살 버릇 여든까지 간다'는 말 아시죠~!? 이런 말이 괜히 나온 말이 아닌거 같다는 생각이 많이 듭니다. 결국 어려서부터 부모가 옆에서 하나부터 열까지 모든 걸 다 가르치고 알려준다면, 그아이는 커서도 부모에게 의지하는 그런 나약한 사람으로 자라게 되는 것입니다. 그러니, 명심하십시오. 아이에게서 배움의 기회를 빼앗지 마십시오.
똑똑한 사람은 가르치지 않아도 알아서 똑똑해 질까?에 대한 이런 저런 자료를 정리해 본 내용입니다.
반응형
내용 요약
이 글에서는 똑똑한 사람들이 스스로 학습할 수 있는 능력에 대해 탐구합니다. 전통적으로, 지능이 높은 사람들은 별도의 교육 없이도 독립적으로 학습할 수 있다고 여겨져 왔습니다. 그러나 이는 지능뿐만 아니라 개인의 학습 스타일과 동기부여에 따라 달라질 수 있습니다. 이 글에서는 지능과 학습 능력의 관계, 교육의 필요성, 그리고 효과적인 학습 방법에 대해 논의합니다.
목차 1.지능과 학습 능력의 관계 2.교육의 중요성 3.효과적인 학습 방법 4.결론
1. 지능과 학습 능력의 관계
지능은 학습 능력의 한 요소일 뿐입니다. 일반적으로 IQ(지능지수)가 높은 사람들은 정보 처리 능력이 빠르고, 문제 해결 능력이 뛰어나며, 비판적 사고가 발달해 있습니다. 이러한 특성은 스스로 학습할 수 있는 능력을 높이는 데 유리합니다. 예를 들어, 과학, 기술, 공학, 수학(STEM) 분야에서 높은 지능을 가진 학생들은 복잡한 개념을 더 쉽게 이해하고 적용할 수 있습니다.
그러나 지능이 낮은 사람이 학습할 수 없는 것은 아닙니다. 지능이 평균 이하인 사람들도 꾸준한 노력과 적절한 지원을 통해 충분히 학습할 수 있습니다. 학습은 개인의 경험과 환경에 따라 크게 달라지며, 다양한 학습 방식이 존재합니다. 예를 들어, 감각적 학습자(비주얼, 오디오, 키네스틱 등)는 각각 다른 방식으로 정보를 처리합니다. 따라서 학습 방법이 개인에 맞지 않으면, 지능이 높더라도 학습이 어려워질 수 있습니다.
2. 교육의 중요성
지능이 높다고 해서 무조건 독립적으로 학습할 수 있는 것은 아닙니다. 적절한 교육과 멘토링은 개인의 잠재력을 극대화하는 데 필수적입니다. 특히 복잡한 주제나 기술을 배우는 경우, 효과적인 학습을 위해 누군가의 안내가 필요할 수 있습니다. 교육은 단순히 지식을 전달하는 것이 아니라, 문제 해결 능력과 비판적 사고를 기르는 데 도움을 줍니다.
예를 들어, 수학 문제를 스스로 풀려 할 때, 개념이 명확하지 않으면 쉽게 어려움에 직면할 수 있습니다. 이럴 때, 좋은 멘토나 교사의 지도가 있다면 문제를 더 효과적으로 해결할 수 있습니다. 교육은 기초 지식을 쌓는 데 필요한 도구와 자원을 제공하며, 이는 결국 스스로 학습할 수 있는 기반이 됩니다.
또한, 교육은 개인의 자신감을 높이는 데도 중요한 역할을 합니다. 자신이 알고 있는 것을 다른 사람에게 설명할 수 있는 능력은 자신감을 키우고, 이는 다시 스스로 학습하려는 의지를 높입니다. 한 연구에 따르면, 자기주도적 학습 능력은 학생의 학업 성취도와 직결된다고 합니다. 따라서 교육의 중요성을 간과할 수 없습니다.
3. 효과적인 학습 방법
효과적인 학습 방법은 개인마다 다르지만, 반복 학습과 실습은 매우 중요합니다. 문제를 반복적으로 풀어보는 것이 수학 학습에 특히 효과적입니다. 반복 학습은 뇌가 정보를 장기 기억으로 전환하는 데 도움을 주며, 실습을 통해 이론을 실제로 적용해볼 수 있습니다.
학습 목표를 설정하고 그 목표에 도달하기 위한 계획을 세우는 것도 중요합니다. 예를 들어, 수학에서 특정 주제를 마스터하기로 결심한 경우, 그 주제와 관련된 문제를 매일 일정량 풀어보는 것입니다. 이러한 방식은 학습을 구조화하고 지속적인 동기를 부여하는 데 큰 도움이 됩니다.
또한, 다양한 자료를 활용하여 자기 주도적으로 학습하는 습관을 기르는 것도 좋습니다. 독서, 온라인 강의, 그리고 스터디 그룹은 모두 학습에 도움을 줄 수 있는 유용한 자원입니다. 특히 스터디 그룹은 서로의 생각을 공유하고 질문을 주고받을 수 있어, 더 깊이 있는 이해를 도와줍니다. 이처럼 다양한 접근 방식을 통해 학습할 때, 개개인의 강점을 최대한 발휘할 수 있습니다.
4. 결론
결국, 똑똑한 사람이 스스로 학습할 수 있는 능력은 단순히 지능에만 국한되지 않습니다. 개인의 학습 스타일, 동기부여, 그리고 교육의 역할이 모두 중요한 요소로 작용합니다. 지능이 높더라도 교육과 지도의 필요성을 무시할 수는 없습니다. 따라서 모든 사람에게 적절한 교육이 필요하며, 이는 독립적인 학습 능력을 기르는 데 큰 도움이 될 것입니다.
학습은 단지 지식을 쌓는 과정이 아니라, 삶을 더 풍요롭게 만들고, 개인의 성장을 촉진하는 중요한 과정입니다. 똑똑한 사람이라고 해서 항상 스스로 학습할 수 있는 것은 아니며, 모든 사람은 각자의 방식으로 배우고 성장할 수 있는 잠재력을 가지고 있습니다. 따라서, 우리는 서로에게 필요한 지식과 경험을 나누며, 함께 성장하는 방향으로 나아가야 할 것입니다.
Delegate는 C#에서 메서드를 참조하는 형식입니다. 특정 메서드의 참조를 저장하고 그 메서드를 나중에 호출할 수 있습니다. 덕분에 메서드를 변수처럼 다룰 수 있으며, 메서드를 인수로 전달하거나 이벤트 핸들링에서 사용됩니다.
// Delegate 선언
public delegate void MyDelegate(string message);
// Delegate 사용 예시
public class MyClass
{
public void PrintMessage(string message)
{
Console.WriteLine(message);
}
}
MyDelegate del = new MyClass().PrintMessage;
del("Hello, Delegate!"); // 출력: Hello, Delegate!
// 리턴값 있는 Func 예시
Func<int> getNumber = () => 42;
int result = getNumber(); // 결과: 42
Func<int, int, int> addNumbers = (a, b) => a + b;
int sum = addNumbers(5, 3); // 결과: 8
4. RelayCommand에서 Action과 Func의 역할
RelayCommand는 WPF에서 MVVM 패턴을 구현할 때
버튼 클릭 등의 UI 동작을 처리하기 위해 사용됩니다.
Action과 Func는 RelayCommand 내부에서
명령 실행 로직과 실행 가능 여부를
결정하는 함수로 사용됩니다.
public class RelayCommand : ICommand
{
private readonly Action _execute; // 명령 실행
private readonly Func<bool> _canExecute; // 실행 가능 여부 판단
public RelayCommand(Action execute, Func<bool> canExecute = null)
{
_execute = execute ?? throw new ArgumentNullException(nameof(execute));
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute == null || _canExecute();
}
public void Execute(object parameter)
{
_execute();
}
}
1. Action _execute
_execute는 실제 명령을 실행하는 코드 블록을 참조하며,
사용자 동작(예: 버튼 클릭)을 수행할 때
실행할 동작을 정의합니다.
2. Func<bool> _canExecute
_canExecute는 명령이 실행 가능한지 여부를 판단하는 함수로, bool 값을 반환합니다.
5. RelayCommand 사용 예시
public class MainViewModel
{
public RelayCommand GeneratePostCommand { get; }
public RelayCommand PostToNaverCommand { get; }
public MainViewModel()
{
// Action을 통한 명령 실행 메서드
GeneratePostCommand = new RelayCommand(GeneratePost);
// Func<bool>을 통한 조건 추가
PostToNaverCommand = new RelayCommand(PostToNaver, CanPostToNaver);
}
private void GeneratePost()
{
Console.WriteLine("Generating Post...");
}
private void PostToNaver()
{
Console.WriteLine("Posting to Naver...");
}
private bool CanPostToNaver()
{
return !string.IsNullOrEmpty(GeneratedPost);
}
}
내용 정리
Delegate: C#에서 메서드를 참조하는 형식으로, 메서드를 변수처럼 사용할 수 있도록 합니다.
Action: 반환값이 없는 메서드를 참조하는 델리게이트입니다.
Func: 반환값이 있는 메서드를 참조하는 델리게이트로, 마지막 매개변수로 반환 타입을 설정합니다.
RelayCommand: WPF에서 MVVM 패턴을 구현할 때 사용되며, Action을 통해 명령을 실행하고, Func<bool>을 통해 실행 조건을 지정합니다.
이 개념을 이해하면 WPF에서 MVVM 패턴의 명령 시스템을 보다 효율적으로 구현할 수 있습니다.
커피머신 구매를 고민 중이시라면, 커피의 향과 맛을 제대로 살려주는 브레빌(Breville) 반자동 커피머신을 꼭 한번 보시길 바랍니다.
안녕하세요. 오늘은 구매한지 2년이 다 되어가지만 우리집 가전 제품 중에서 정말 구매하기 돈 아까워서 고민에 고민을 하고 또 고민해서 구매한 하지만 지금은 절대 없어서는 안될, 심지어 개인적으로는 건조기보다도 더 소중하게 생각하는 브레빌 반자동 커피 머신에 대해 사용중 리뷰를 하려고 합니다.
public class Family
{
private string _firstName = "gildong"; // 필드 (접근성 : private)
private string _lastName = "Kim";
private int _age = 30;
}
위의 예시에서처럼 _firstName, _lastName, _age는
모두 private 접근 지정자로 선언된
변수수로서
클래스 외부에서는 접근이 불가능한
필드(field)이다.
이러한 필드는 method, property, Indexer등을 통해
접근하도록 해야 잘못된 입력값으로부터 보호할 수 있으며,
선언할 때 연산자를 사용하여 초기값을 지정할 수 있다.
각 필드는 "gildong", "Kim", 30으로
초기화 되었다.
만약, 접근 지정자가 public으로 되어있다면,
클래스 외부에서 인스턴스(객체)의 필드에 접근할 때는
객체 이름 뒤에 마침표를 추가하고 그 뒤에 필드 이름을 추가하면 된다.
public class Family
{
public string _firstName = "gildong"; // 필드 (접근성 : private)
public string _lastName = "Kim";
public int _age = 30;
}
int main()
{
Family family;
family._firstName = "hongja";
family._lastName = "Choi";
family._age = 27;
}
2.속성의 정의
속성이란 필드의 값을 읽거나 쓰거나 계산하는
유연한 메커니즘을 제공하는 멤버이다.
속성은 공용 데이터 멤버인 것처럼 사용할 수 있지만
"접근자"라는 특수 메서드 이다.
이 기능은 데이터의 안전성과 유연성을 높이는데 도움이 되며,
이 기능을 통해 privat로 선언된 필드를
외부에서 접근이 가능하도록 할 수 있다.
마치 publi으로 선언하는 것과 별반 차이가 없어 보일 수도 있으나,
속성을 사용하는 이유는
값을 변경하거나 가져올 때,
조건을 통해 필드에 대한 접근을 콘트롤 할 수 있기 때문이다.
public class Family
{
private string _firstName = "gildong"; // 필드 (접근성 : private)
public string FirstName // 속성 (접근성 : public)
{
get { return _firstName; } // get method : 필드의 값을 얻고자 할때
set // set method : 필드에 값을 대입하고자 할때
{
_firstName = value; // value(키워드) : 내장 변수로서 프로퍼티에 할당된 실제 값을 나타냄
}
}
}
위와 같이 Family class내에 _firstName이 "gilDong"으로 초기화 되어있으며,
접근 지정자는 private으로서 클래스 외부에서는
접근이 불가하지만,
FirstName이라는 속성(property)을 정의하고,
get/set method를 정의함으로서
외부에서 간접적으로 _firstName에 접근(read,write)하는 것이
가능하다.
여기에서, 아래 표와 같이
get 혹은 set metho의 정의 여부에 따라
읽기 전용 혹은 쓰기 전용으로 Property를 만드는 것도 가능하다.
접근 가능성
구현 방법
ro/rw
get/set method를 모두 정의
ro
get method만 정의
rw
set method만 정의
이러한 필드(field)와 속성(property)을 아래 실습 예제를 통해 알아보자.
3.실습 예제 및 실행 결과
실습을 하기에 앞서 프로젝트 생성은 아래와 같이 해주었다.
Visual Studio에서 New Project를 선택 후
아래와 같이 language는 C#, Template는 Console Application
으로 한다.
아래 예제에서와 같이
_firstName, _lastName, _address, _familyMember등이
모두 private으로 설정되어 있어서
사실상 외부에서 접근이 불가능한 필드이지만, 각각이
FirstName, LastName, Address, FamilyMember라는 속성을 가지고 있으며,
또한 get/set method를 정의하였기 때문에
외부에서의 접근이 가능하다.
using System;
public class Family
{
private string _firstName = "KilDong"; // 필드 (접근성 : private)
public string FirstName // 속성 (접근성 : public)
{
get { return _firstName; } // get method : 필드의 값을 얻고자 할때
set
{ // set method : 필드에 값을 대입하고자 할때
_firstName = value; // value(키워드) : 내장 변수로서 프로퍼티에 할당된 실제 값을 나타냄
}
}
private string _lastName = "Kim";
public string LastName
{
get { return _lastName; }
set
{
_lastName = value;
}
}
private int _age = 30;
public int Age
{
get { return _age; }
set
{
_age = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Family familyObj = new Family();
Console.WriteLine(“Before familyObj.Age set : " + familyObj.Age);
familyObj.Age = 20;
Console.WriteLine(“After familyObj.Age set : " + familyObj.Age);
}
}
위 코드를 실행하면,
아래와 같이 객체 familyObj는 초기에
_age가 30으로 초기화 되었다가
속성 Age를 통해 값 '20'이 write되어
'20'으로 변경되는 것을 확인할 수 있다.
여기에서 set method에 조건을 추가하여
필드에 값을 write하는 경우
특정 범위를 벗어날 때(0보다 작은 경우) 값의 입력이 안되도록
코드를 변경해 보자.
이를 위해 _age 필드의 속성 Age에 대해
set metho를 아래와 같이 수정하였다.
private int _age = 30;
public int Age
{
get { return _age; }
set
{
if (value < 0) {Console.WriteLine(“Invalid value”); }
else _age = value;
}
}
class Program
{
static void Main(string[] args)
{
Family familyObj = new Family();
Console.WriteLine("Before familyObj.Age set: " + familyObj.Age);
familyObj.Age = -2;
Console.WriteLine("After familyObj.Age set: " + familyObj.Age);
}
}
실행 결과,
초기에 설정된 값 30이 변경되지 않고 그대로 있는 것을 확인 할 수 있다.
마찬가지로 get method에 대해서도 조건을 추가하여
필드의 값을 읽을 수 없도록 설정하는 것이 가능하다.
이를 위해 _age필드에 대한 Age속성의 get method를
아래와 같이 수정하고 실행해 보도록 하자.
private int _age = 30;
public int Age
{
get
{
if (_age == 50) { return 0; }
else { return _age; }
}
set
{
if (value < 0) { Console.WriteLine("Invalid value : " + value); }
else _age = value;
}
}
class Program
{
static void Main(string[] args)
{
Family familyObj = new Family();
Console.WriteLine("Before familyObj.Age set: " + familyObj.Age);
familyObj.Age = -2;
Console.WriteLine("After familyObj.Age set: " + familyObj.Age);
familyObj.Age = 50;
Console.WriteLine("After familyObj.Age set: " + familyObj.Age);
}
}