反射机制与工厂设计模式

反射机制与工厂设计模式
反射机制与工厂设计模式

[零基础学JAVA]Java SE应用部分-36.反射机制与工厂设计模式

Java的反射机制

工厂模式综合讲解

1、什么叫反射

https://www.360docs.net/doc/158008546.html,ng.reflect包下

正常情况下我们可以通过类实例化一个对象,那么通过反射实际上就可以通过一个对象得到此类完整的包.类名称。

package org.michael;

class Person{

private String name;

private int age;

public void setName(String name){

https://www.360docs.net/doc/158008546.html, = name;

}

public void setAge(int age){

this.age = age;

}

public String getName(){

return https://www.360docs.net/doc/158008546.html,;

}

public int getAge(){

return this.age;

}

}

public class Demo01{

public static void main(String args[]){

Person p = new Person();

//假设现在不知道p是那个类的对象,则可以通过反射机制找到

Class c = null;

c = p.getClass();

System.out.println(c.getName());

}

}

看下效果:

除了可以找到对象所在的包.类名称,实际上也可以把所有的方法名称列出来。

package org.michael;

import https://www.360docs.net/doc/158008546.html,ng.reflect.*;

class Person{

private String name;

private int age;

public void setName(String name){

https://www.360docs.net/doc/158008546.html, = name;

}

public void setAge(int age){

this.age = age;

}

public String getName(){

return https://www.360docs.net/doc/158008546.html,;

}

public int getAge(){

return this.age;

}

}

public class Demo02{

public static void main(String args[]){

Person p = new Person();

//假设现在不知道p是那个类的对象,则可以通过反射机制找到

Class c = null;

c = p.getClass();

Method m[] = c.getMethods();

for(int i=0;i

System.out.println(m);

}

}

}

2、研究Class类

Class类的构造方法被私有化了,外部无法直接看见,所以其内部必然有一个方法可以取得Class 实例。

public static Class forName(String className) throws ClassNotFoundException

此方法可以返回Class类的实例,此方法接收一个完整的包.类名称。

通过newInstance方法,可以将传入的完整的字符串(包.类名称)实例化。

package org.michael;

import https://www.360docs.net/doc/158008546.html,ng.reflect.*;

class Person{

private String name;

private int age;

public void setName(String name){

https://www.360docs.net/doc/158008546.html, = name;

}

public void setAge(int age){

this.age = age;

}

public String getName(){

return https://www.360docs.net/doc/158008546.html,;

}

public int getAge(){

return this.age;

}

}

public class Demo03{

public static void main(String args[]){

Person p = null;

Class c = null;

try{

c = Class.forName("org.michael.Person");

}catch (Exception e){}

try{

p = (Person)c.newInstance();

}catch (Exception e){}

//上面两行代码也可以使用下面一行代码取代哈~

// p = (Person)Class.forName("org.michael.Person").newInstance();

p.setName("Michael");

p.setAge(30);

System.out.println(p.getName()+"--->"+p.getAge());

}

}

如果要使用以上的代码去实例化一个对象,则必须有一个前途条件:在对象所在的类中必须有一个无参构造方法,如果没有此无参构造,则肯定会出现错误。

package org.michael;

import https://www.360docs.net/doc/158008546.html,ng.reflect.*;

class Person{

private String name;

private int age;

public Person(String name,int age){

https://www.360docs.net/doc/158008546.html, = name;

this.age = age;

}

public void setName(String name){

https://www.360docs.net/doc/158008546.html, = name;

}

public void setAge(int age){

this.age = age;

}

public String getName(){

return https://www.360docs.net/doc/158008546.html,;

}

public int getAge(){

return this.age;

}

}

public class Demo04{

public static void main(String args[]){

Person p = null;

Class c = null;

try{

c = Class.forName("org.michael.Person");

p = (Person)c.newInstance();

}catch (Exception e){

System.out.println(e);

}

System.out.println(p.getName()+"--->"+p.getAge());

}

}

在此时如果想继续通过此操作为对象进行实例化,则可以通过构造方法类(Constructor)完成。

package org.michael;

import https://www.360docs.net/doc/158008546.html,ng.reflect.*;

class Person{

private String name;

private int age;

public Person(String name,int age){

https://www.360docs.net/doc/158008546.html, = name;

this.age = age;

}

public void setName(String name){

https://www.360docs.net/doc/158008546.html, = name;

}

public void setAge(int age){

this.age = age;

}

public String getName(){

return https://www.360docs.net/doc/158008546.html,;

}

public int getAge(){

return this.age;

}

}

public class Demo05{

public static void main(String args[]){

Person p = null;

Class c = null;

try{

c = Class.forName("org.michael.Person");

Constructor[] cs = c.getConstructors();

Object obj[] = new Object[]{"Michael",30};

//一个类中会有多个构造方法,所以此时返回一个数组

p = (Person)cs[0].newInstance(obj);

}catch (Exception e){

System.out.println(e);

}

System.out.println(p.getName()+"--->"+p.getAge());

}

}

反射机制实际上是我们所有框架的一个基础,那么现在就利用反射机制完成一个高可扩展性的工厂设计。

回顾:工厂设计

interface Fruit{

public void grow();

public void eat();

}

class Apple implements Fruit{

public void grow(){

System.out.println("苹果在生长...");

}

public void eat(){

System.out.println("吃苹果...");

}

}

class Orange implements Fruit{

public void grow(){

}

public void eat(){

System.out.println("吃橘子...");

}

}

class Factory{

public static Fruit getFruit(int i){

Fruit f = null;

if (i==1){

f = new Apple();

}

if (i==2){

f = new Orange();

}

return f;

}

}

public class Demo06{

public static void main(String args[]){

Fruit f = Factory.getFruit(1);

f.grow();

}

}

客户端只与工厂和直接的接口有关了,而与其他的无关,但是有个问题,如果现在要扩展了子类,则工厂也必须同时进行修改。那么有没有一种方法,可以让子类扩充之后不去修改工厂呢?肯定是有的,通过Class.forName 完成。

interface Fruit{

public void grow();

public void eat();

}

class Apple implements Fruit{

public void grow(){

System.out.println("苹果在生长...");

}

public void eat(){

System.out.println("吃苹果...");

}

}

class Orange implements Fruit{

public void grow(){

}

public void eat(){

System.out.println("吃橘子...");

}

}

class Banana implements Fruit{

public void grow(){

System.out.println("香蕉在生长...");

}

public void eat(){

System.out.println("吃香蕉...");

}

}

class Factory{

public static Fruit getFruit(String className){

Fruit f = null;

try{

f = (Fruit)Class.forName(className).newInstance();

}catch (Exception e){}

return f;

}

}

public class Demo07{

public static void main(String args[]){

Fruit f = Factory.getFruit("Banana");

f.grow();

}

}

但是此程序依然有一个缺点,现在的输入的包.类名称实际上长度非常的短,如果包.类名称的长度过长了,则在使用的时候就比较麻烦了。所以最好可以找个代号进行替代。

使用Hashtable的子类—— Properties完成。

import java.util.*;

import java.io.*;

interface Fruit{

public void grow();

public void eat();

}

class Apple implements Fruit{

public void grow(){

System.out.println("苹果在生长...");

}

public void eat(){

System.out.println("吃苹果...");

}

}

class Orange implements Fruit{

public void grow(){

System.out.println("橘子在生长...");

}

public void eat(){

System.out.println("吃橘子...");

}

}

class Banana implements Fruit{

public void grow(){

System.out.println("香蕉在生长...");

}

public void eat(){

System.out.println("吃香蕉...");

}

}

class Factory{

public static Fruit getFruit(String className){

Fruit f = null;

try{

f = (Fruit)Class.forName(className).newInstance();

}catch (Exception e){}

return f;

}

}

class InputData{

private BufferedReader buf = null;

public InputData(){

this.buf = new BufferedReader(new InputStreamReader(System.in));

}

public String getString(){

String str = null;

try{

str = this.buf.readLine();

}catch (Exception e){}

return str;

}

}

public class Demo08{

public static void main(String args[]){

Properties p = new Properties();

p.setProperty("a","Apple");

p.setProperty("o","Orange");

p.setProperty("b","Banana");

System.out.println(p);

System.out.print("请选择所需要的类型:");

String str = new InputData().getString();

//进一步扩展,现在可以由用户自己输入要使用的类型

Fruit f = Factory.getFruit(p.getProperty(str));

f.grow();

}

}

如果现在再增加子类呢?

属性文件肯定不够了。

所以此时为了达到好的效果,则最好可以将属性保存起来,之后通过修改保存的文件达到属性的扩充。

import java.util.*;

import java.io.*;

interface Fruit{

public void grow();

public void eat();

}

class Apple implements Fruit{

public void grow(){

System.out.println("苹果在生长...");

}

public void eat(){

System.out.println("吃苹果...");

}

}

class Orange implements Fruit{

public void grow(){

System.out.println("橘子在生长...");

}

public void eat(){

System.out.println("吃橘子...");

}

}

class Banana implements Fruit{

public void grow(){

System.out.println("香蕉在生长...");

}

public void eat(){

System.out.println("吃香蕉...");

}

}

class Factory{

public static Fruit getFruit(String className){

Fruit f = null;

try{

f = (Fruit)Class.forName(className).newInstance();

}catch (Exception e){}

return f;

}

}

class PropertyOperate{

private Properties pro = null;

public PropertyOperate(){

this.pro = new Properties();

this.load();

}

//设置一个返回方法

public Properties getPro(){

return this.pro;

}

//从文件中读出属性,如果文件不存在,则创建一个默认的

private void save(){

pro.setProperty("a","Apple");

pro.setProperty("o","Orange");

//保存在文件之中

try{

pro.storeToXML(new FileOutputStream(new File("e:\\fruit.xml")),"FRUIT FACTORY");

}catch (Exception e){}

}

private void load(){

File f = new File("e:\\fruit.xml");

if(f.exists()){

//文件存在则可以读取

try{

pro.loadFromXML(new FileInputStream(f));

}catch (Exception e){}

}else{

//进行创建

this.save();

}

}

}

class InputData{

private BufferedReader buf = null;

public InputData(){

this.buf = new BufferedReader(new InputStreamReader(System.in));

}

public String getString(){

String str = null;

try{

str = this.buf.readLine();

}catch(Exception e){}

return str;

}

}

public class Demo09{

public static void main(String args[]){

Properties p = new PropertyOperate().getPro();

System.out.println(p);

System.out.print("请选择所需要的类型:");

String str = new InputData().getString();

//进一步扩展,现在可以由用户自己输入要使用的类型

Fruit f = Factory.getFruit(p.getProperty(str));

f.grow();

}

}

如果此时要想新增加可以操作的子类,则就需要配置fruit.xml文件即可。

此种代码是典型的配置与程序相分离,程序直接有配置文件有关。某一个部分的修改不影响其他程序。——思想必须建立起来。

总结

对象的产生到底有多少种方法了:

·直接用new关键字产生:直接,但是代码间会产生严重的耦合性

·可以通过工厂传递引用:直接,但是必须考虑到代码以后的可维护性

·通过对象克隆可以完成

·通过Class.forName()进行反射加载完成

软件设计模式复习

创建型模式概述 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式分析 将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。 在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何Java源代码。 简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。 简单工厂模式的不足 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,加入必要的处理逻辑,这违背了“开闭原则”。在简单工厂模式中,所有的产品都是由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性,而工厂方法模式则可以很好地解决这一问题。 模式动机 考虑这样一个系统,按钮工厂类可以返回一个具体的按钮实例,如圆形按钮、矩形按钮、菱形按钮等。在这个系统中,如果需要增加一种新类型的按钮,如椭圆形按钮,那么除了增加一个新的具体产品类之外,还需要修改工厂类的代码,这就使得整个设计在一定程度上违反了“开闭原则”。 模式定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。 模式分析 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方

最新完整版光的反射教学设计

《光的反射》教学设计 隆阳区第一中学张丽君 教学目标 知识目标 (1)知道什么是光的折射现象,知道折射中的入射点、入射光线、折射光线、法线、入射角和折射角. (2)能叙述光的折射现象的实验结论. (3)知道光的折射现象中,光路是可逆的. (4)已知入射光线,能根据光的折射现象的实验结论画出折射光线的大致方向. (5)能举出光的折射现象在生活中的实例. 能力目标 由观察演示实验现象入手,通过教师的引导,帮助学生分析、概括出相应结论.培养学生的观察能力,训练学生的分析、概括能力. 情感目标 利用折射现象中的因果关系,再次向学生灌输注意客观事物中存在的因果关系的重要性. 教学建议 教材分析 本节进一步讲解了光学的有关知识,又是光的折射的基础,所以本节有承上启下的作用,光的折射规律的正确理解是本节的关键,对于透镜的学习,照像机和幻灯机,放大镜的理解起至关重要的作用.课本列举了各种光的折射的实例,对这些实例进行讨论分析对理解光的折射规律有很大的作用.本节中介绍了在折射中光同样具有可逆性.

教法建议 注意在本节的讲授中要合理有效的运用实验教学和启发式教学两种方法.激发学生的学习兴趣,在光的折射规律的理解上,要结合实验对比使学生明白“折射角小于入射角”这一结论的成立是有条件的. 为了培养具有创新能力的人才,教师不但要传授科学的定理、定律,还要传授这些定理、定律是如何被发现的.因此,讲一点相关的物理学史的内容,也是符合目前物理教学改革方向的措施之一. 教学设计过程 1.引入课题 当光射到两种介质的交界面上,有一部分光返回原介质继续传播,这种现象叫光的反射,如果光射到的是不透明物体的交界面,那么另一部分光会被吸收,但是如果光是射到某种透明介质的交界面上,比如从空气中射入水中或者玻璃中,另一部分光就要进入水中或者玻璃中传播.在引入课题中要注意学生的主动性. 方案一:向学生演示动画,使学生明白光斜入射在空气和水两种介质的分界面上,光不仅仅会发生反射,还会发生折射,激发学生的学习兴趣,带着问题进入新课的学习. 方案二:演示各种有趣的光的折射现象,例如内画壶、插入水中的筷子看上去变弯了等等从而引入新课. 2.新课教学 (一)光的折射定义的讲解 课堂小实验一:在日常生活中光的折射现象十分普遍,请学生们透过玻璃砖看自己的手指,并注意调换观察的角度,看一下,发生了什么现象?也可以用铅笔,或其它物品代替手指进行观察. 实验结论:视线越斜,错位越显著,如果视线垂直于玻璃砖的侧面则没有发生错位. 课堂小实验二:将一枚硬币放进水中,让学生观察硬币的位置是否发生变化.

(工厂管理)J设计模式之工厂模式(F)

Java设计模式之工厂模式(Factory) 时间:2009-08-04 17:23 来源:未知作者:和水柔石 CSDN IE QQ百度我挖Google POCO Yahoo新浪365Key天极和讯博拉Live奇客鲜果收客饭否叽歪挖客 核心提示:作者:和水柔石一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz (奔驰)、Bmw (宝马)、Audi (奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz 车后跟司机说开奔驰车!,坐上Bmw 后他说开 作者:和水柔石 一、引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz (奔驰)、Bmw (宝马)、Audi (奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz 车后跟司机说" 开奔驰车!" ,坐上Bmw 后他说" 开宝马车!" ,坐上Audi 后他说" 开奥迪车!" 。你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C 语言一直是通过这种方式来坐车的!幸运的是,这种有病的现象在OO 语言中可以避免了。下面以Java 语言为基础来引入我们本文的主题:工厂模式!! 二、简介 工厂模式主要是为创建对象提供了接口。工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况: 1. 在编码时不能预见需要创建哪种类的实例。 2. 系统不应依赖于产品类实例如何被创建、组合和表达的细节 三、简单工厂模式 顾名思义,这个模式本身很简单,而且使用在业务较简单的情况下。 它由三种角色组成(关系见下面的类图): 1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java 中它往往由一个具体类实现。 2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java 中由接口或者抽象类来实现。 3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java 中由一个具体类实现。

人教版八年级物理上册《光的反射》教学设计

人教版八年级物理上册《光的反射》教学设 计 一、教学目标 知识与技能 .了解光在一些物体表面可以发生反射。认识光反射的规律,了解法线、入射角和反射角的含义。 .理解反射现象中光路的可逆性,了解什么是镜面反射,什么是漫反射。 过程与方法 .通过实验,观察光的反射现象,体验和感悟我们是如何看见不发光的物体的。 .通过探究“光反射时的规律”,用实验的方法获得反射光线、入射光线和法线位置的关系,测量反射光线与法线、入射光线与法线的夹角,总结探究的结论,获得比较全面的探究活动体验,培养学生观察能力、信息收集和处理能力以及分析概括能力。 情感态度和价值观 在探究“光反射时的规律”过程中培养学生的科学素养,鼓励学生积极参与探究活动,密切联系实际,提高科学技术应用于日常生活和社会的意识,并养成实事求是的科学态度。

二、教学重难点 初中光学内容主要有光的直线传播、光的反射、折射现象,光的反射是日常生活中常见的现象,并有广泛的应用。本节是在学习了光的直线传播的基础上进行的,是学习平面镜成像的前提条件,因此,本节课内容在光学中处于基础地位。对于光的反射,学生已有一定的生活经验,本节内容的难点是从实验现象中总结出反射规律,以及应用光的反射规律来解释、解决一些实际问题,作光路图的能力要求是比较高的。光的反射规律是光学中的重要规律,是理解平面镜、球面镜作用的基础,也是本章的重点知识。 教学重点:用科学探究的方法得出光的反射规律。 教学难点:用光的反射解释一些简单现象。 三、教学策略 本节是一节集物理现象、物理概念、物理规律于一身的课。其中光的反射规律是本节的核心,也是实施“探究式”教学的有效阵地。在授课中,教师引导学生利用“发现并提出问题──做出猜想和假设──制定计划与设计实验──通过观察和实验等途径来收集证据──得出结论──交流与合作──提出新问题”的探究式教学过程,自己“发现”并总结出光的反射规律。本节的主要物理知识蕴含于探究活动之中,学生探究能力的提高、研究方法的习得也与探究过程密不可分。因此,本节取得良好教学效果的关键是指导、

字节跳动面试经验分享(非常详细)

字节跳动面试官一招差点KO我,一共面试了3轮(5年经验),艰难拿下2-2职级offer! 前言 我从大学毕业开始做Android开发,现在已经五年时间了,现在在山东老家济南做Android开发。这三年里面,也只是一心在做Android开发,其他语言接触的并不多,了解点JS之类的。现在感觉Android开始不像以前那样好做了,也可能是现在年纪慢慢大了,要考虑的事情变多了的缘故吧。 不知道以后应该何去何从,总是感觉做Android或者说做程序员一直处在一种不稳定之中,在一些中小公司里面,可能工作一年两年就因为各种各样的原因而离职。马上就要结婚了,该买房了。济南的房价一直在涨,而自己的收入还是这么不温不火的,加上这不稳定的工作,让人对于前途实在是乐观不起来。 再加上今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次字节的面试真的太难为我了,可以说是和面试官大战了3个回合,不过好在最后给了offer。 我个人情况是5年Android开发经验,字节跳动定级2-2(年薪是50-100w左右含加班费和股票折现,不含车餐房补)的样子,我是拿到了年薪60w+,13薪。下面是我的面试经历,与学习经验分享,希望能带来一些不一样的启发和帮助。 我与字节跳动面试官“大战”3回合,胜! 我的学习经验 1—4年大学 ?Java

无论什么级别的Android从业者,Java作为Android开发基础语言。不管是工作还是面试中,Java都是必考题。如果不懂Java的话,薪酬会非常吃亏(美团尤为重视Java基础) 详细介绍了Java泛型、注解、并发编程、数据传输与序列化、高效IO、容器集合、反射与类加载以及JVM重点知识线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种引用类型、GC 分代收集算法 VS 分区收集算法、GC 垃圾收集器、JAVA IO/NIO 、JVM 类加载机制的各大知识点。 ?筑基必备 Android架构师筑基包括哪些内容呢: 1.深入 Java 泛型. 2.解深入浅出 3.并发编程 4.数据传输与序列化 5.Java 虚拟机原理 6.反射与类加载 7.高效 IO 8.Kotlin项目实战 大学1-4年架构师筑基必备 ?学习笔记整理 架构师筑基必备目录 架构师筑基必备第一章

初中物理《光的反射》优质课教案、教学设计

教学设计 第二节光的反射(教案) 【教学目标】 一、知识与技能 1.了解光的反射现象,知道人之所以看见不发光的物体的原因。 2、通过实验探究认识光的反射定律,了解法线、入射角和反射角的含义。 3.通过实验了解反射现象中光路的可逆性 4、通过身边的事例和实验现象,能区分镜面反射和漫反射,趋利避害。 二、过程与方法 1、通过视频和实验,观察光的反射现象 2、经历探究“光的反射定律”的实验,获得比较全面的探究活动体验 三、情感、态度与价值观 1、在探究“光的反射定律”过程中培养学生的科学态度 2、密切联系实际,提高科学技术应用于日常生活的社会意识 3、鼓励学生积极参与探究活动,培养合作意识 【教学重点】光的反射定律的探究 【教学难点】光的反射定律、镜面反射与漫反射 【教学方法】实验探究教学 【教具媒体】多媒体、激光灯、平面镜、光屏、竹针、泡沫等 【教学过程】 教授新课:

教学内容教师活动学生活动导入新课视频——回光战术视频中张飞的士兵运用了回光战术打 败了曹兵。张飞的士兵应遵循怎样的规律同时把盾牌翻过来 呢?盾牌的制作有什么特点?今天我们带着二个问题学习 本节知识。 观察现象 光的反射光的 反射 定律 (士 兵如 何摆 放盾 牌) 描绘出阳光经士兵盾牌表面射到马的传播路径。 根据学生的画图, 引出光的反射(板书) 光的反射定义当光射向物体 表面时, 一部分光会被物 体表面反射,这种现象 我们称为光的反射。 介绍光的反射的光路图。反射光线、入射光线、反射面、入射 点、法线(定义)、反射角、入射角(三线、两角、一点、一 面)(让学生对照着桌上的实验器材) 巩固:学案(写出图中各部分的名称) 提问:士兵的盾牌光反射时遵循什么规律呢?(拿出泡沫 板,师生演示、猜想) 展示:有的在同一平面内,有的不在同一平面内 与学生一起设计探究方案, 实验探究一:反射光线、入射光线和法线是否在同 一平面内? 引导学生猜想,设计实验,介绍器材、强调注意事项, 做好演示。探究(各组探究自己的猜想)明确用折屏法探究 三线是否共面,指导学生分组实验,让光线沿光屏投射到 平面镜入射点O 上,入射点与光屏刻度半圆中心重合,观 察反射光的位置。将有反射光的半个光屏向后折转一个角度 思考、画图、回答 观察认识光路图中各 部分的名称,并在学 案上写出。 观察、思考、提出问题、 猜想 1. 设计实验方案 2. 小组实验探究。规范 ,

设计模式简单工厂

简单工厂设计模式 目录 1.1摘要 (2) 2.1关键字 (2) 3.1开发工具 (2) 4.1简单工厂模式动机与定义: (2) 4.1.1模式动机 (2) 4.1.2模式定义 (2) 5.1简单工厂模式结构 (3) 6.1简单工厂模式实例: (4) 6.1.1代码分析 (4) 6.1.1.1Product(Shape抽象类)代码: (4) 6.1.1.2ConcreteProduct(Juxing,YuanXing,SanJiao具体产品类)代码:5 JuXing类: (5) YuanXing类: (6) SanJiao类: (6) 6.1.1.3Factory(Factory类)代码: (7) 6.1.1.4 (main类): (7) 6.1.1.5运行结果: (10) 7.1结论 (10) 8.1参考文献: (10)

1.1摘要 本文从面向对象的角度对java接口的概念、作用以及使用它的好处做分析,讲解面向接口编程的方法,结合初步接触软件开发的人员习惯,从简单工厂设计模式的概念和其结构以及用途进行解析,重点讲解简单工厂设计模式在软件开发过程中的作用和好处,通过一些实例来说明简单工厂设计模式的特点。 2.1关键字 面向对象;java接口;接口编程;简单工厂设计模式。 3.1开发工具 Eclipse java语言开发 4.1简单工厂模式动机与定义: 在实际的软件开发过程中有时需要创建一些来自于相同父类的类的实例,为此可以专门定义一个类来负责创建这些类的实例,这些被创建的实例具有共同的父类。在这种情况下,可以通过传入不同的参数从而获取不同的对象,理由Java语言的特征,习惯上将创建其他类实例的方法定义为static方法,外部不需要实例化这个类就可以直接调用该方法来获得需要的对象,该方法也成为静态工厂方法。 4.1.1模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮,矩形按钮等),这些按钮都源自同一个基类,不过在继承基类之后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。 4.1.2模式定义 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。

《光的反射》教学设计 原稿

目录 一.教学分析 (2) 二.教学设计 (3) 三.板书设计 (7) 四.创新之处 (7) 五.附录I课堂模拟图 (8) 六.附录II实验报告 (12) 七.附录III学习评价表 (13) 八.附录IV教材内容 (14)

一、教学分析 课题人教版八年级物理第四章第二节:光的反射课型实验探究课课标 要求 通过实验探究了解光的反射规律教学方式师生互动,自主探究合作 学生分析这节课之前,学生已探究过光的直线传播规律,且老师让学生事先收集光的反射方面的信息并交流,学生已具备了一定的实验探究能力和合作精神,利用游戏提高学生学习物理的兴趣,学生在课堂中表现出了对有关光的现象的浓厚兴趣。 教材分析本节课是在探究光的直线传播的基础上学习的,本节课主要通过学生的探究活动来认识光的反射规律和光路可逆现象。最后介绍镜面反射和漫反射现象。本节课利用生活中的反射现象引起学生的学习兴趣,并通过游戏的方式激发学生的学习热情,并利用实验帮助学生体验知识的形成过程以及加深知识的理解掌握。 教学目标 知识与技能 1.了解光在一些物体表面可以发生反射51053015531305053 2.认识光反射的规律,了解法线、入射角和反射角的含义 3. 会根据光的反射定律画出光路图 4.理解反射现象中光路的可逆性 5.了解什么是镜面反射,什么是漫反射 过程与方法 1.通过实验观察光的反射现象 2.体验和感悟我们是如何看见不发光的物体的 3.经历探究“光反射时的规律”,用实验的方法获得反射光线、入射光线跟法线位置的关系,测量并比较入射角和反射角,总结探究的 结论,获得比较全面的探究活动体验培养学生观察能力、信息收集 和处理能力以及分析概括能力 4.通过观察,理解镜面反射和漫反射的主要差异 情感与价值观 1.在探究“光的反射的规律”过程中培养学生的科学素养 2.密切联系实际,提高科学技术应用于日常生活和社会的意识 3.鼓励学生积极参与探究活动,并养成实事求是的科学态度 教学分析和处理 教学重点光的反射定律的探究过程及对内容的理解为本节课的重点 教学难点“三线共面”、漫反射镜面反射的区别、漫反射依然遵循光的反射定律教学方法 通过课件模型演示向学生展示清晰、直观的光的反射现象,引导学生带着问题去观察思考、探究归纳总结出光的反射定律。充分利用学生 的好奇、好胜心理,在课堂上进行游戏,激发学生的学习兴趣。 教材的延伸把物理融入实际生活,让物理走向社会 教具改造过的激光笔、平面镜、量角器、磁铁、木块、纸板、光具箱一套

反射式数字全息显微镜光学系统

数字全息显微镜的光学系统设计 摘要 数字全息显微术是把数字全息和全息显微相结合,用CCD代替传统的全息干板来实现全息显微的过程。 本文通过理论的分析和计算,完成了以下工作: 1)在数字全息的方法上,介绍和比较了几种记录和再现的方法;并选择了无透镜傅里叶变换与同轴全息相结合的光路,可以最大利用CCD分辨率和简化光路。在系统光路中加入相移技术,消除零级和共轭像。 2)在1/2英寸CCD情况下,利用干涉仪原理设计出了基本光路;分析并选择了各个部件的具体参数;分析计算了系统中需要满足的条件。计算出在几种物镜预放大情况下,系统的分辨率和放大率。 在对微小物体做近距离显微时,本文的显微系统极限分辨率理论长度可以达到0.8μm左右。 关键词:全息术;数字全息显微;预放大技术。

Optical system design of digital holographic microscopy Abstract Digital holographic microscopy digital holography and holographic microscopy combined with CCD, instead of the traditional holographic plate to realize the process of holographic microscopy. In this paper, through the theoretical analysis and calculation, completed the following works: 1)Introduced and compared several recording and reproducing methods in the selection of digital holographic method,and chooses the lens-less Fourier transform and coaxial holographic to be the light path which can use CCD resolution and simplified the optical path. In the optical system with phase shifting technique to eliminate the effect of zero order and conjugate image. 2)In 1/2 inch CCD cases, using an interferometer principle to design the basic light path; Analysis and select the specific parameters of components;Calculate the conditions to meet the system. Calculate the system resolution and magnification in several objectives. In the short distance microscopic, the microscopic system can reach 1μm resolution lenth, Key Words: Holography;Digital holography microscopy;Preamplification -technology;

设计模式试卷

设计模式期中考试试题 一:单项选择(共20道,每道2分) 1、设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换D都不是 3、Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型C行为型D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 7、“不要和陌生人说话” 是( )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 8、构造者的的退化模式是通过合并()角色完成退化的。 A.抽象产品B产品C创建者D使用者 9、以下关于简单工厂模式叙述错误的是() A 它属于GoF23种设计模式 B 它是最简单的设计模式之一 C 它是学习其他创建型模式的基础 D 它只需要记住一个简单的参数即可获得所需对象的实例 E 它类中的方法通常为静态方法 F 它返回的类都有一个公共的父类和公共的方法 10、对象适配器模式是()原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 D.以上表述全部错误。 11.对于依赖倒转的表述错误的是() A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。 12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

新人教版初中物理《光的反射》教学设计

第一节光的反射(第一课时) 一、教材分析 本节内容选自沪科2011版八年级第四章第一节《光的反射》第一课时。初中科学中关于光学的主要内容为光的直线传播、光的反射、光的折射等。科学概念、原理和规律是科学知识的核心内容。掌握光反射的得出过程和规律是本节内容的核心。从内容上看,本节以探究为主线,层层深入来探索光反射的规律。另外,本节内容也为后续学校平面镜成像、光的折射打下坚实的基础,在整个教材中起着承上启下的关键作用。 二、学情分析 【学前基础】在知识方面,学生在此之前已经学习了光的直线传播和光的颜色等相关知识,已经具备了一定的“元认知”,这对本节内容的教学是非常有利的。在技能方面,学生已经掌握了一定的实验操作能力。 【心理基础】八年级的学生正处于形象思维到抽象思维的过渡时期,思维能力、理解能力普遍不高,往往需要直接感性经验的支持。但八年级的学生对新事物的好奇心和求知欲很强,对任何事情总想“一探究竟”,这对教学是非常有利的。 【可能出现的思维障碍及误区】对于光路可逆这一知识点,学生比较难理解。另外,对于反射角等于入射角这一表述上,极容易产生混淆。 【教学目标】 知识与技能:1了解光在均匀介质中沿直线传播,并能用来解释现象。 2知道光线是表示光的传播方向的直线。 3知道光在真空中的传播速度。 4知道什么是光的反射现象. 5理解光的反射定律,能应用反射定律解决一些简单的问题. 过程与方法:1.通过观察分析实验,总结得出光的直线传播和反射定律,培养观察、分析、概括的能力. 2.通过对光的反射定律的分析培养学生的逻辑思维能力. 3.通过光的反射现象的解释,培养学生运用物理知识解决实际问题的能力. 4.通过对光路图的应用,逐渐培养学生空间想象能力和抽象思维能力. 情感态度与价值观: 1.通过生动有趣的光学现象调动学生学习兴趣,培养学生积极向上的情感. 2.密切联系实际,培养学生用辨证的观点来看待事物,提高科学技术应用于日 常生活和社会的意识。 【教学重点】光的直线传播与反射定律的探究过程及应用 【教学难点】 1光的直线传播应用 2反射定律中“三线共面”这个结论的得出,要求学生有较高的抽象思维能 力,分析归纳的能力。所以,“三线共面”是一个难点。 【教具准备】激光电筒,蚊烟,装有水(染色)的水槽、毛玻璃砖,光的反射定律探究仪(自制),镜子,白纸,光具盒(若干),多媒体课件。 【教学过程】

java类加载机制

Java类加载机制(一) 译:ayi 第一次翻译,翻译得不是很好,请多多指点 我的邮箱:nonopo12345@https://www.360docs.net/doc/158008546.html, 原文:https://www.360docs.net/doc/158008546.html,/pub/a/onjava/2005/01/26/classloading.html 类加载是java特性的一个重量级的组成部分。尽管,java中“advanced topics”的发展,使java的类加载机制的地位有所下降。但每位编程着都应该知道这部分的工作机制,以及怎样去更好与其配合。这可以使我们节省很多时间,二不必要浪费在调试ClassNotFoundException, ClassCastException, 等。 这篇文章将从最基本的开始,比如代码和数据的关系和区别,以及他们怎么样关系起来形成一个实例或者对象。然后将会说到,java中怎样通过类加载器把代码加载到JVM中,以及java中实现的主要的几种类型的类加载器。然后在这篇文章中我们将会了解到java类加载机制的内幕,我们将使用最基本的代码来描述,这些代码执行与类加载器之后,但在加载一个类之前。在接下来的部分将使用一些例子来强调,对于开发者继承和开发自己的类加载器的必要性。接着将告诉你们怎样编写自己的类加载器,以及怎样使用它们去创建一个一般的能加载包括远程客户端辅助代码的类加载器引擎,以及怎样把它在JVM中定义,实例化,然后执行。习惯上,把J2EE-specific components 中说明的作为java类加载的规范,这篇文章正是从这本手册总结来的。 类和数据 一个类代表一段要执行的代码,然而数据则代表与这些代码相关联的某种状态。状态可以改变,代码不能改变。我们把一种特定状态与一个类关联起来时,就得到了这个类的一个实例。所以同一个类的不同实例有不同的状态,但都参照相同的代码。在java中,一个类通常它的代码就包含在一个 .class 文件中,虽然其中也包括异常。然而,在java运行时,每个类都会构造一个超类对象(first-class object),它们其实是https://www.360docs.net/doc/158008546.html,ng.Class的实例。不论何时编译一个java文件,编译器都会在编译后的字节码中嵌入一个public, static, final型的字段class,这个字段表示的就是一个https://www.360docs.net/doc/158008546.html,ng.Class型的实例。因为它是public类型的,我们可以通过标识符来访问它,像这样: https://www.360docs.net/doc/158008546.html,ng.Class klass = Myclass.class; 只要一个类被加载到JVM,相同的类(强调:相同的类)将不会被重复加载。这将产生一个问题,什么才是相同的类?一个对象有一种特定状态和标识,对象总是与它所属类联系在一起,与这种状况相似,一个被加载到JVM中类也有特定的标识,接下来我们就阐述: 在java中,一个类通过认证的类全名来唯一标识。认证的类全名是由包名和类名两部分组

C#设计模式 之 工厂方法模式

工厂方法模式(Factory Method) 耦合关系: 动机(Motivation): 在软件系统中,由于需求的变化,"这个对象的具体实现"经常面临着剧烈的变化,但它却有比较稳定的接口。 如何应对这种变化呢?提供一种封装机制来隔离出"这个易变对象"的变化,从而保持系统中"其它依赖的对象"不随需求的变化而变化。 意图(Intent): 定义一个用户创建对象的接口,让子类决定实例哪一个类。Factory Method使一个类的实例化延迟到子类。 ----------《设计模式》GOF 结构图(Struct):

生活实例: 适用性: 1.当一个类不知道它所必须创建的对象类的时候。 2.当一个类希望由它子类来指定它所创建对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 实例代码: CarFactory类: 1public abstract class CarFactory 2{ 3public abstract Car CarCreate(); 4} Car类: 1public abstract class Car 2{ 3public abstract void StartUp(); 4public abstract void Run(); 5public abstract void Stop(); 6 7} HongQiCarFactory类:

1public class HongQiCarFactory:CarFactory 2{ 3public override Car CarCreate() 4{ 5return new HongQiCar(); 6} 7} BMWCarFactory类: 1public class BMWCarFactory:CarFactory 2{ 3public override Car CarCreate() 4{ 5return new BMWCar(); 6} 7} HongQiCar类: 1public class HongQiCar:Car 2{ 3public override void StartUp() 4{ 5Console.WriteLine("Test HongQiCar start-up speed!"); 6} 7public override void Run() 8{ 9Console.WriteLine("The HongQiCar run is very quickly!"); 10} 11public override void Stop() 12{ 13Console.WriteLine("The slow stop time is3second"); 14} 15} BMWCar类: 1public class BMWCar:Car 2{

第七届全国中学物理青年教师教学大赛优秀教案光的反射

第七届全国中学物理 青年教师教学大赛教案 (一) 参赛选手:严小玲 参赛课题:光的反射 参赛单位:广东惠阳高级中学 《光的反射》教学设计 设计者:广东惠阳高级中学物理科组严小玲

课题沪科版,八年级第四章第二节:光的反射 学生分析这节课之前,学生已探究过光的直线传播规律,且老师让学生事先收集光的反射方面的信息并交流,学生已具备了一定的实验探究能力和合作精神,利用游戏提高学生学习物理的兴趣,学生在课堂中表现出了对有关光的现象的浓厚兴趣。 教材分析本节课是在探究光的直线传播的基础上学习的,本节课主要通过学生的探究活动来认识光的反射规律和光路可逆现象。最后介绍镜面反射和漫反射现象。本节课利用生活中的反射现象调动学生的学习兴趣,并利用实验帮助学生体验知识的形成过程以及加深知识的理解掌握。 教学目标 知识与技能 知道什么是光的反射,探究并了解光的反射规律及镜面反射和漫反射,并会用光的反射规律来解释一些有关的简单的生活现象 过程与方法 通过探究“光反射时的规律”,用实验的方法获得反射光线、入射光线跟法线位置的关系,测量反射光线与法线、入射光线与法线的夹角,总结探究 的结论,获得比较全面的探究活动体验,培养学生观察能力、信息收集和处 理能力以及分析概括能力。 情感与价值观 在探究“光反射时的规律”过程中培养学生的科学素养,鼓励学生积极参与探究活动,密切联系实际,提高科学技术应用于日常生活和社会的意识, 并养成实事求是的科学态度。 教学分析和处理 教学重点光的反射规律和镜面反射、漫反射在生活中的应用。 教学难点探究光的反射规律的实验 教学方法 通过模型演示向学生展示清晰、直观的光的反射现象,引导学生带着问题去观察思考、探究归纳总结出光的反射定律。充分利用学生的好奇、好胜 心理,在课堂上进行游戏,激发学生的学习兴趣。 教材的延伸把物理融入到实际生活,让物理走向社会 教具激光手电,平面镜、自制光源、实验报告一份、自制反射仪 教学环节活动 时间 教学活动 设计意图 教师活动学生活动

三反射式柱面光学系统设计及优化

第28卷 第7期光 学 学 报 Vol.28,No.72008年7月 ACTA OP TICA SINICA J uly ,2008 文章编号:025322239(2008)0721359205 三反射式柱面光学系统设计及优化 梁敏勇 廖宁放 冯 洁 林 宇 崔德琪 (北京理工大学信息科学技术学院颜色科学与工程国家专业实验室,北京100081) 摘要 针对传统单片柱透镜和柱面反射镜成像光束不理想以及视场通常小于1°,提出并设计了一种三反射式柱面结构。对柱面光线追迹及单片柱面镜成像进行了深入分析,分别设计了三反射式圆柱面和二次曲线柱面系统,提出了一种基于抛物柱面镜理想线聚焦的新型像差优化方法,使其在子午面方向各视场调制传递函数得到最佳优化,并达到成像光谱仪等在狭缝方向上高空间分辨率要求。其子午面总视场均达到了3°,在45lp/mm 分辨率条件下,边缘视场子午面方向的调制传递函数分别优于0.2和0.6。关键词 光学设计;三反射式柱面;线聚焦;光线追迹;二次曲线柱面 中图分类号 O433.1 文献标识码 A doi :10.3788/AOS20082807.1359 Des i g n a n d Op t i miz a t i on of Th ree Cyli n d rical Ref lect ors Op t ical S ys t e m Liang Minyong Liao Ningfang Feng J ie Lin Yu Cui Deqi (Nat ion al L abor ator y of Color Scie nce a n d Engi neeri ng ,School of I nf or m a tion Science a n d Tech nology , Beiji ng I nstit ute of Tech nology ,Beiji ng 100081,Chi n a ) Abs t r act A single cylindrical reflector usually has defects of distortional imaging beam and limited field of view usually less than 1°.A three cylindrical reflectors system is p resented to overcome these defects.Based on the ray t racing of cylindrical reflector ,a three circularly cylindrical reflectors and a three conic 2cylindrical reflectors system have been designed.The f ull field of view (FOV )has reached 3°in tangential plane ;on the edge of FOV ,the modulation t ransfer f unction (M TF )of the former design at 45lp/mm is better than 0.2and the latter is better than 0.6.A new optimization method using parabolic 2cylindrical reflector is p resented.This method can be used to optimize the M TF in tangential plane ,and the final M TF satisfies the requirement of the high spatial resolution in imaging spect rometer field. Key w or ds optical design ;three cylindrical reflectors ;line focusing ;ray t racing ;conic 2cylindrical reflector 收稿日期:2007210211;收到修改稿日期:2008201215 基金项目:国家863计划(2006AA12Z124)和国家自然科学基金(60377042)资助课题。 作者简介:梁敏勇(1981-),男,博士研究生,主要从事成像光谱技术、高光谱技术等方面的研究。 E 2mail :L my @https://www.360docs.net/doc/158008546.html, 导师简介:廖宁放(1960-),男,教授,博士生导师,主要从事成像光谱技术、颜色与图像技术等方面的研究。 E 2mail :Liaonf @https://www.360docs.net/doc/158008546.html, 1 引 言 随着光学加工工艺的日益发展,包含各种新型光学表面的光学系统不断涌现。柱面光学面形结构已广泛应用到各种光学系统中。例如在宽银幕电影的摄影镜头和放映镜头中,在希望获得变形图像(影像在两个相互垂直的方向上具有不同的缩放比例)等实用场合,都可以采用圆柱面透镜或圆柱面反射镜系统。在需要进行长狭缝聚光的仪器中和一些激光应用中,需要把圆激光束变换成线光束,例如激光 柱面波干涉仪、光切法三维面形测量、X 射线激光线 聚焦等[1~5]。此外,在遥感领域的推扫型成像光谱仪光路系统中,包括萨尼亚克(Sagnac )透射型[6]和菲涅耳全反射型傅里叶成像光谱仪[7],高通量干涉型计算层析成像光谱仪光路中也使用柱面光学系统实现投影功能[8,9]。柱面系统成像性能的优劣直接影响成像光谱仪系统的空间分辨率[10]。 针对传统单片柱透镜和柱面反射镜的成像光束不能产生理想线聚焦[11],且视场小等缺点,本文提

小学科学全国优质课教案光的反射

小学科学全国优质课教案 《光的反射》(第一课时) 北京市平谷区山东庄中心小学刘春梅 一、指导思想与理论依据 “光的反射”一课,是首师大版科学第六册“光与生活单元”的教学内容。从课标和教材的要求来看本课聚焦的是光的反射概念。学生建立光的反射概念之后,教材又安排了通过纸筒在平放的镜子中分别找一找上、中、下三个气球(拴在铁架台上)、两个平面镜用纸或胶条连接在一起,看镜子中的像、自制万花筒、自制潜望镜的活动。在这些活动中,学生看到的现象除了与镜面反射有关还与漫反射也有关,所以本节课聚焦的是两个科学概念:光的反射(镜面反射)和漫反射;一个认识(命题或判断):人眼的视觉主要是物体漫反射的结果。 镜面反射是指光遇到镜面障碍物发生偏折返回的现象;漫反射是指光遇到粗糙面障碍物向四面八方反射的现象。这两个概念的定义方式都为发生定义,即“属概念”为光现象,“种差”为发生偏折返回,即以发生方式的区别下定义。这里以建构主义学习为指导思想,以逻辑学概念定义理论为依据,通过设计揭示反射(镜面反射)和漫反射发生的实验,让学生体验和认识反射和漫反射的发生过程及特点,遵循发生定义方式获得科学概念。采用逻辑思维方法中的典型归纳法(科学归纳法),即:由一根光线、一束光线的行为推广到无数光线的行为,建立普遍结论(光的反射和漫反射的科学概念)。 一个认识:人眼的视觉主要是物体漫反射的结果。它是经历认识过程,得到的科学判断,也是以建构主义为指导,通过设计学生的观察活动建立此认识。具体的观察活动设计,又是以逻辑学理论为依据。选择运用典型归纳法,即:一个物体漫反射可以形成视觉,可以代表多个物体或无数个物体。视觉是物体漫反射的结果,由于不易察觉、观察,为此教师根据观察实验方法中的增强感觉知觉的方法——对比法,设计有光和无光条件,指导学生对物体的视觉效果进行对比感知。

相关文档
最新文档